我正在製作一個加載OBJ和MTL文件的應用程序,然後將它顯示在屏幕上供用戶旋轉。我正在運行Android 6.0.1的手機上進行測試。 OBJ和MTL文件位於手機上名爲「模型」的目錄中。要選擇應用程序中的文件,我需要打開一個菜單並點擊'打開'。但沒有READ_EXTERNAL_STORAGE
權限,該應用程序會崩潰。我在AndroidManifest.xml中添加了權限並再次測試了該應用。這一次,我可以點擊'打開'並查看列表視圖中的所有文件應該是,除非我看不到任何文件。點擊'打開'後,該應用程序也不會崩潰。 logcat沒有顯示任何錯誤。Android READ_EXTERNAL_STORAGE權限是否正常工作?
當尋找答案,我的問題,我碰到這樣的:
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
是否需要審批權限爲它實際讀取外部存儲和顯示應用程序中的文件?這是我需要添加到我的代碼? 即使在尋找答案之後,我似乎也無法解決這個看起來很簡單的'錯誤'。從Settings-> App- > [you app name]
2)
的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>
'要在應用程序中選擇一個文件,我需要打開一個菜單,然後單擊 '打開'。但沒有READ_EXTERNAL_STORAGE權限,該應用程序會崩潰。如果它是您的應用程序,那麼請告訴我們,如果用戶點擊打開,您會做什麼。我們怎麼知道?如果你發現異常/錯誤,應用程序不必崩潰。 – greenapps
'是否需要批准其實際讀取外部存儲器a'的權限?請求您的應用的用戶授予權限。所以用戶應該點擊Yes。你看到對話框來了嗎? – greenapps
當用戶點擊打開時,我們仍然看不到您執行的代碼。所以我們不知道會發生什麼。在Android 6及以上版本中,您確實需要添加代碼,以允許用戶在清單中授予您請求的權限。 – greenapps