我关注的是MainActivity,它寻求6.0电话和存储任务的许可。它提示
权限2倍,然后崩溃。我获得获得许可后是否需要重新启动MainActivity?
感谢您的帮助或指示。

MainActivity.java

onCreate(){
seek_permissions()
//load db data and continue
//with the app tasks
}


public void seek_permissions(){
            boolean hasWritePermission = (ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED);
            if (!hasWritePermission) {
                ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_PHONE_STATE,Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.MOUNT_FORMAT_FILESYSTEMS,Manifest.permission.RECEIVE_BOOT_COMPLETED,Manifest.permission.MODIFY_PHONE_STATE}, REQUEST_PERM);
            }
    }
     @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case REQUEST_PERM:
            {
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                acquired_perm = 1;
                }
                else {Toast.makeText(MainActivity.this, "Please consider granting these permissions", Toast.LENGTH_LONG).show(); }
            }
            return;
        }
    }

最佳答案

对我来说,这是由于我在 list 中为此 Activity 使用了android:noHistory="true"引起的?

我认为这可能是Android 6.0的一个错误,因为更高版本似乎可以正常工作。

如果设置了noHistory,则ActivityCompat.requestPermissions调用将导致执行调用方Activity的onDestroy,从而将其销毁。由于noHistory的缘故,它没有保存在历史记录中,因此它不再存在,并且在取消权限对话框时,该应用实质上已关闭。

作为解决方法,而不是 list 中的"noHistory",您可以在离开“ Activity ”并从 list 中删除标签时,在finish()或其他合适的位置调用onStop()

10-08 15:04