【发布时间】:2017-02-21 17:56:03
【问题描述】:
对于具有 API 23 或更高版本的 Android 设备,我如何在不重新启动应用程序的情况下授予外部存储权限(有点像在单个会话中将用户的音乐库上传到 Google Play 音乐)?我知道这个问题已在 SO 中多次解决,但到目前为止我还没有找到任何运气。
这是我的清单文件中的权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
主活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // API 23
if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
return; // Included here to prevent the app from crashing.
}
}
/**
* CODE HERE FOR INSTANTIATIONS AND SUCH.
*/
}
...因为到目前为止,我需要重新启动应用程序才能通过(以及 MainActivity 的实例化等)在接受初始弹出窗口的权限后。
非常感谢。
【问题讨论】:
-
“我需要重新启动应用程序才能通过权限”——不,你不需要。移动“示例代码在此处”。进入另一种方法。如果您碰巧此时已经拥有权限,请从
onCreate()调用该方法。如果用户同意这些权限,也可以从onRequestPermissionsResult()调用该方法。例如,请参阅this sample project。
标签: android permissions android-permissions android-external-storage