Android 6.0在运行时授权后需要重新启动。

13
我遵循这个指南来请求Android 6.0的权限:https://developer.android.com/preview/features/runtime-permissions.html#support-lib。然而,我必须销毁应用程序并重新启动才能获得WRITE_EXTERNAL_STORAGE权限,否则会在创建文件时失败。我错过了什么吗?
if(ActivityCompat.checkSelfPermission(mContext, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED){
    ActivityCompat.requestPermissions((MainActivity)mContext,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},MY_PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE);
} else {
    Intent i = new Intent(v.getContext(), ServiceDownload.class);
    v.getContext().startService(i);
}

文件是在服务中创建的,这是模拟器而不是真实设备。


1
这是一个已经在问题追踪器中打开的漏洞。 - greywolf82
@ greywolf82,你能发一下问题的链接吗?我找不到它。 - SmT
@SmT 这是已经报告的问题的错误:https://code.google.com/p/android-developer-preview/issues/detail?id=2982&q=WRITE_EXTERNAL_STORAGE&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars如果您需要更多关于这个主题的帮助,请查看这篇博客:http://www.captechconsulting.com/blogs/runtime-permissions-best-practices-and-how-to-gracefully-handle-permission-removal - user1518292
1个回答

2

正如其他人已经提到的,这是一个bug。但我发现在这个问题中,您可以添加这一行代码:

android.os.Process.killProcess(android.os.Process.myPid());

在获得您的许可后执行。这并非真正的修复,只是帮助避免崩溃。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接