Android M 运行 时间权限问题

Android M run time permission problems

我刚刚想出了如何让 android 应用程序 post 有一个请求权限的对话框,并且仅在用户点击允许时才执行特定命令。但我坚持在那之后让应用程序重新启动,由于 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);

有没有其他方法可以重新启动应用程序,可以让 phone 告诉应用程序它有权执行某些操作。

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

    }
}