我在模擬器運行正常,證明代碼沒問題。
動態申請代碼如下。
try {
String[] PERMISSIONS_STORAGE ={
"android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE"
};
int permission = ActivityCompat.checkSelfPermission(activity, "android.permission.WRITE_EXTERNAL_STORAGE"); if (permission != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,REQUEST_EXTERNAL_STORAGE); } } catch (Exception e) { Log.d(TAG, "verifyStoragePermissions: 權限失敗 "+e); }
報錯如下
File: java.io.FileNotFoundException: /storage/emulated/0/1.txt: open failed: EACCES (Permission denied)
我還嘗試在手機權限手動開啟存盤權限,還是不行
我用的android studio3,加了android.injected.testOnly=false
manifests中加了
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
希望能解決,謝謝大家
uj5u.com熱心網友回復:
搞定了,我的是安卓10,所以加一句 android:requestLegacyExternalStorage="true"
uj5u.com熱心網友回復:
給你說一個很不錯的 動態申請權限的庫 https://github.com/googlesamples/easypermissionsuj5u.com熱心網友回復:
感謝,我也是這問題。uj5u.com熱心網友回復:
Android10中還可以通過android:requestLegacyExternalStorage="true",做一個兼容操作,Android11后,該方法也無效了,盡量不要在sd卡讀寫操作,應當使用沙盒,即data/data/包名和sdcard/Andrdoid/data/包名下的目錄進行檔案讀寫操作,Android11行為變更:https://developer.android.google.cn/preview/behavior-changes-all?uj5u.com熱心網友回復:
Android后面權限會越來越嚴的轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/12261.html
標籤:Android
