Android M运行时权限问题

时间:2016-07-29 15:00:52

标签: android android-studio android-6.0-marshmallow android-6.0.1-marshmallow

我只是弄清楚如何让Android应用程序发布一个对话框,要求获得权限,并且只在用户点击允许时才执行特定命令。但是我之后仍然坚持让应用程序重新启动,由于Android的bug,除非重新启动,否则应用程序没有权限。

代码似乎并没有起作用。该应用程序重新启动,但它离开了它的位置;在第一次启动时保持设备分配的相同首选项。

// 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 :(得分: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;
        }

    }
}