-1

나는 안드로이드 앱에 권한을 묻는 대화 상자를 게시하고 사용자가 허용 할 때만 특정 명령을 실행하는 방법을 알아 냈습니다. 하지만 다시 시작하지 않으면 앱에 권한이없는 안드로이드 버그로 인해 앱이 다시 시작되는 문제에 봉착했습니다.Android M 런타임 권한 문제

코드가 작동하지 않는 것 같습니다. 응용 프로그램이 재부팅되지만 그 위치는 그대로 유지됩니다. 처음 출시 할 때 장치가 지정한 것과 동일한 기본 설정을 유지합니다.

// Schedule start after 1 second 
     PendingIntent pi = PendingIntent.getActivity(this, 0, getIntent(), PendingIntent.FLAG_CANCEL_CURRENT); 
     AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
     am.set(AlarmManager.RTC, System.currentTimeMillis() + 10000, pi); 

     // Stop now 
     System.exit(0); 

앱, 전화가 특정 일을 할 수있는 권한이 응용 프로그램을 알 수 있도록 일하는 것이 일을 다시 시작하기 위해 다른 방법이있다.

+1

권한을 얻으려면 응용 프로그램을 다시 시작할 필요가 없습니다. 그런 안드로이드 버그는 없습니다. 왜 그런 버그가 있다고 생각하는지에 대한 자세한 정보를 게시 할 수 있습니까? –

+0

앱을 다시 시작하지 마십시오. 런타임에 권한을 요청하고 권한이 부여되지 않은 경우 충돌을 일으키지 않아야합니다. – Shark

+0

나는 허용 된 후에 권한을 변경하지 않는 응용 프로그램의 문제를 말하는 몇 사람의 게시물을 읽었습니다. 버그입니다. 이 변경을 수행하는 유일한 방법은 앱을 완전히 다시 시작하는 것입니다. – TheSwindler44

답변

1

런타임에 사용 권한을 요청하면 비동기로 작동하므로 사용 권한을 묻는 작업에서 onRequestPermissionsResult()을 다시 정의해야합니다. 이 같은 :

@Override 
public void onRequestPermissionsResult(int requestCode, 
             String permissions[], int[] grantResults) { 


    switch (requestCode) { 
     case Constants.YOUR_REQUEST_CODE: { 
      // If request is cancelled, the result arrays are empty. 
      if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       // permission was granted. do your stuff here 
      } else { 
       // Permission denied - Show a message to inform the user that this app only works 
       // with these permissions granted 

      } 
      return; 
     } 

    } 
} 
관련 문제