-1

我剛纔想出瞭如何讓android應用程序發佈一個對話框詢問權限,並只在用戶點擊允許時執行特定命令。但我堅持讓應用程序重新啓動之後,由於Android的錯誤應用程序沒有權限,除非重新啓動。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

你不需要重新啓動應用程序來獲得權限。沒有這樣的Android錯誤。你能發佈更多關於你爲什麼認爲存在這樣的錯誤的信息嗎? –

+0

不要重新啓動應用程序,只需要在運行時詢問權限,並確保在未授予權限時不會崩潰。 – Shark

+0

我讀過幾個人的帖子,說應用程序在被允許後不更改權限的問題是bug。進行此更改的唯一方法是完全重新啓動應用程序。 – 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; 
     } 

    } 
}