-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; 
     } 

    } 
}