我正在创建一个加载OBJ和MTL文件的应用程序,然后在屏幕上显示它以供用户旋转。我正在运行Android 6.0.1的手机上进行测试。
OBJ和MTL文件位于手机上名为“models”的目录中。要在应用中选择文件,我需要打开一个菜单,然后点击“打开”。但是没有READ_EXTERNAL_STORAGE
权限,应用程序就会崩溃。我在AndroidManifest.xml中添加了权限并再次测试了应用程序。这一次,我可以点击“打开”并查看所有文件应该在的列表视图,除了我看不到任何文件。点击“打开”时,该应用也不会崩溃。 logcat没有显示任何错误。
在寻找我的问题的答案时,我遇到了这个:
if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (shouldShowRequestPermissionRationale(
Manifest.permission.READ_EXTERNAL_STORAGE)) {
// Explain to the user why we need to read the contacts
}
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
// MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE is an
// app-defined int constant that should be quite unique
return;
}
Sniplet来源:https://developer.android.com/training/permissions/requesting.html#perm-check
是否需要批准其实际读取外部存储并在应用中显示文件的权限?这是我需要添加到我的代码中的东西吗? 即使在寻找答案之后,我似乎无法解决这个简单的“错误”。
的AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="[REDACTED]"
android:versionCode="1"
android:versionName="16150.8">
<uses-sdk android:minSdkVersion="7"
android:targetSdkVersion="23"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="23" />
<application
[REDACTED]
</application>
</manifest>
答案 0 :(得分:0)
1)清除Settings-> App- > [you app name]
2)从权限行中删除android:maxSdkVersion
。
3)按代码检查请求权限
if (Build.VERSION.SDK_INT >= Build.Build.VERSION_CODES.M) {
checkPermissions(Utils.PERMISSION_WRITE_EXTERNAL_STORAGE);
}else{/*open regulary*/}
答案 1 :(得分:0)
对于大于23的api,您需要添加运行时权限。
1)检查最小sdk版本是否应大于15。
2)最大sdk版本应大于23或23。
3)每次访问外部存储或其他任何内容时,都需要调用运行时权限。
4)请参阅此站点以获取运行时权限 http://www.truiton.com/2016/04/obtaining-runtime-permissions-android-marshmallow-6-0/
https://www.sitepoint.com/requesting-runtime-permissions-in-android-m-and-n/
http://www.journaldev.com/10409/android-handling-runtime-permissions-example