日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在android X(安卓10版本)运行创建父文件夹失败,解决办法

發布時間:2023/12/31 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在android X(安卓10版本)运行创建父文件夹失败,解决办法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

適配安卓X版本時,發現很多權限申請后無法達到應有的效果。
例如:申請了內存的讀寫權限,但是還是無法創建父文件夾。
查閱了一下開發文檔:
getExternalStorageDirectory()-在API級別29中不推薦使用此方法。為了提高用戶隱私,不建議直接訪問共享/外部存儲設備。
當應用程序定位到Build.VERSION_CODES.Q時,此方法返回的路徑不再可供應用程序直接訪問。
通過遷移到Context#getExternalFilesDir(String),MediaStore或Intent#ACTION_OPEN_DOCUMENT之類的替代方案,應用程序可以繼續訪問共享/外部存儲中存儲的內容。
getExternalFilesDir(null)將返回您的應用存儲文件夾,位于(內部存儲)/Android/data/your.app.name/file/
10.0之前的不變,所以需要做一下判斷:
public static String getSDPath(Context context) {
File sdDir = null;
boolean sdCardExist = Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED);// 判斷sd卡是否存在
if (sdCardExist) {
if (Build.VERSION.SDK_INT>=29){
//Android10之后
sdDir = context.getExternalFilesDir(null);
}else {
sdDir = Environment.getExternalStorageDirectory();// 獲取SD卡根目錄
}
} else {
sdDir = Environment.getRootDirectory();// 獲取跟目錄
}
return sdDir.toString();
}

Android 10 改變了文件的存儲方式不允許應用隨意創建文件夾了,要用安卓提供的文件夾。

Android 10提供了一些文件夾:

例如:Context.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS),這個路徑是在SD卡的Android目錄下的data目錄下的自己應用包下的files目錄下的 Environment.XXX,Environment.XXX代表的意思如下圖

解決辦法:

1.使用android自帶功能解決

2.把targetSdkVersion 改為29之下(如果你的 應用 compileSdkVersion 為29 并且targetSdkVersion為29,就會使用29的最新源碼編譯和運行,如果降低targetSdkVersion在系統源碼運行的時候就會找到相應的targetSdkVersion版本的源碼這樣就相當于繞過了Android 10新特性。)

3.可以在Androidmainfest 里面的application添加:android:requestLegacyExternalStorage=“true”

總結

以上是生活随笔為你收集整理的在android X(安卓10版本)运行创建父文件夹失败,解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。