Android M运行时权限问题

Android M运行时权限问题,android,android-studio,android-6.0-marshmallow,android-6.0.1-marshmallow,Android,Android Studio,Android 6.0 Marshmallow,Android 6.0.1 Marshmallow,我刚刚想出了如何让android应用程序发布一个对话框,请求权限,并且只在用户点击allow时执行特定命令。但是在那之后,我一直坚持让应用程序重新启动,因为android的错误,除非重新启动,否则应用程序没有权限 像这样的代码似乎不起作用。该应用程序重新启动,但离开了原来的位置;保持设备在第一次启动时分配的相同首选项 // Schedule start after 1 second PendingIntent pi = PendingIntent.getActivity(this

我刚刚想出了如何让android应用程序发布一个对话框,请求权限,并且只在用户点击allow时执行特定命令。但是在那之后,我一直坚持让应用程序重新启动,因为android的错误,除非重新启动,否则应用程序没有权限

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

// 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);

是否有其他方法重新启动应用程序,可以让手机告诉应用程序它有权做某些事情。

在运行时异步工作中请求权限,因此您应该在请求权限的活动中覆盖
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;
        }

    }
}

您无需重新启动应用程序即可获得权限。没有这样的安卓bug。你能发布更多关于为什么你认为存在这样一个bug的信息吗?不要重新启动应用程序,你只需要在运行时请求权限,并确保如果没有授予权限,它不会崩溃。我读过一些人的帖子说,应用程序在被允许后不更改权限的问题就是bug。进行此更改的唯一方法是完全重新启动应用程序。