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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 万象百科 >内容正文

万象百科

如何评价在Android11中,/Android/data文件夹无法读写?

發(fā)布時間:2023/11/17 万象百科 60 博士
生活随笔 收集整理的這篇文章主要介紹了 如何评价在Android11中,/Android/data文件夹无法读写? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
非常后悔更新了11,這可能是我見過最惡心的設計了,完全意義不明。能輕松管理所有文件一直是我覺得安卓比ios好的一點,我經常會把應用緩存的一些視屏圖片儲存起來,真的就好的不學學壞的。不過目前還沒有像ios那樣封鎖嚴密,連到電腦上還是可以管理的,以后真的不能無腦更新系統(tǒng)了,后悔。----------------------------------話說現在ES瀏覽器給了權限就可以繼續(xù)瀏覽data了,也算是有了個解決辦法了

https://developer.android.com/about/versions/11/privacy/storage?hl=zh-cn#file-access對數據安全有一定幫助,但是對于某些不遵守安卓規(guī)范的應用來說,恐怕是災難。舉個例子,QQ下載的文件現在在Android/data/com.tencent.mobileqq/Tencent/QQfile_recv下這意味著當我升級安卓11,我無法在正常的權限下獲得我通過QQ下載的東西,這會帶來極大的不方便。當然這只是我的推測,我自己并未使用Android11,如有錯誤請指出。<hr/>目前我已經用上Android11,目前通過自帶文件瀏覽器可以訪問Android/data目錄,root以后通過mt管理器可以讀寫該路徑。

是傘兵機制.喵的,手機里任何一個軟件,注意,是任何軟件你授權了,都可以挎著文件夾讀寫.但是,我這個用戶,即使我授權了,也沒法愉快的直接讀寫.反正意思就是,授權的第三方軟件比系統(tǒng)的管理器更加值得信任而且是無條件的那種.我可以輕松的把文件發(fā)送到百度云,任何云,就是沒法拷貝到本地.這個設計真的是傘兵.

不知道是手機廠商會妥協(xié),一通花里胡哨的操作給各個軟件公司大爹開放權限,還是軟件公司妥協(xié),從此不再往data里亂拉屎。那天我要解壓一個QQ群里文件,之后包括官方文件管理器之內的應用程序都顯示無權限。在網上搜索一下后,我在三星的社區(qū)搜到一個解決辦法:升級安卓11(ONE UI3.0)之后無法訪問DATA文件夾解決辦法 - 蓋樂世社區(qū) - 三星手機官方粉絲論壇神奇的是我安裝這個應用沒有給我要權限,有沒有大佬解答一下這是咋回事。

開發(fā)者訪問安卓11 /android/data的方法為需要的開發(fā)者提供一種訪問安卓11的 /adnroid/data文件夾的方法清濁清濁最新版已經適配安卓11 并且可以免 ROOT 訪問 android/data 針對安卓11 希望分享出這種方法 也希望有些人不要再反編譯我的代碼并抄襲1.申請android/data的訪問權限使用intent 跳轉系統(tǒng)文件管理器到 android/data 并同意你的應用訪問這個文件夾這里是代碼 Uri uri1 = Uri.parse("content://com.android.externalstorage.documents/tree/primary%3AAndroid%2Fdata"); Intent intent1 = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); intent1.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION | Intent.FLAG_GRANT_PREFIX_URI_PERMISSION); intent1.putExtra(DocumentsContract.EXTRA_INITIAL_URI, uri1); startActivityForResult(intent1, 11);這里的url 是我自己在舊安卓使用文件管理器選擇android/data返回的uri 同理 傳遞這個uri 給文件管理器 自然也會跳轉到這文件夾 如果不傳遞uri 系統(tǒng)文件管理器仍然無法顯示 android/data修改:這里的uri 在后續(xù)我發(fā)現在部分安卓11 無法正常跳轉了 以下是解決方法使用DocumentFile.fromTreeUri這個方法 獲得DocumentFile對象 然后再獲取他的uri 傳進去就行了 這樣就能正常跳轉uri 了如果授權完成 會是這樣后續(xù)的檢測是否授權android/data 就自行查看谷歌文檔吧2.使用uri 訪問 android/data 的文件如果你現在有一個文件的path 那么這樣做可以轉為可以訪問的uriString[] paths = path.replaceAll("/storage/emulated/0/Android/data", "").split("/"); StringBuilder stringBuilder = new StringBuilder("content://com.android.externalstorage.documents/tree/primary%3AAndroid%2Fdata/document/primary%3AAndroid%2Fdata"); for (String p : paths) { if (p.length() == 0) continue; stringBuilder.append("%2F").append(p); } return Uri.parse(stringBuilder.toString());這個uri 是android/data里的文件的uri 那么現在你可以使用DocumenFile 訪問這個文件具體的DocumentFile 用法可以谷歌下 3.使用ContentResolver 訪問文件如果你的對象是一個文件夾 并且你想要訪問這文件夾的文件 那么可以使用ContentResolver.query這個方法DocumentsContract.buildChildDocumentsUriUsingTree(dirUri, DocumentsContract.getDocumentId(dirUri));使用這個把uri 轉為 resolver 可處理的uri 然后使用 query查詢resolver.query(childrenUri, new String[]{DocumentsContract.Document.COLUMN_DOCUMENT_ID}, null, null, null);主要是為了獲取DocumentId 用于獲取子文件的uri這個方法是SQL 的方法 當然就可以使用SQL 的語句 可以自行谷歌這個文檔這里是獲取子文件的uri while (cursor.moveToNext()) { String documentId = cursor.getString(0); Uri uri = DocumentsContract.buildDocumentUriUsingTree(dirUri, documentId);}如果可以的話我建議 在此之前判斷 resolver.query 返回的 cursor 對象是否是null 這樣子我們就再次獲取了子文件的uri 了那么DocumentFile 就能再次派上了用場 DocumentFile documentFile1=DocumentFile.fromSingleUri(context,uri);DocumentFile 為我們提供了判斷是否是 文件夾 文件的方法如果是文件夾我們可以再次執(zhí)行這樣得循環(huán) 如果是文件 我們可以獲取大小等由于清濁并不需要讀取文件內容和修改內容 所以這兩個怎么做 我并沒有做了 當然谷歌的文檔說了可以使用I/O 讀取 就跟普通的File 操作沒區(qū)別了到這 4.末這種方法并不是新方法 只是在安卓11 可以用罷了 早在之前讀取聯(lián)系人等 就是用的這種方法 安卓5.0開始就有了這種讀取方法 不過這種方法目前就我看來有一點問題 速度緩慢 容易出現問題 具體問題我已經遇到 在某種情況下會拋出各種exception 給你 當然就需要你catch 一下了 后續(xù)的問題再說吧 或許也有其他方法讀取 代碼并不是原創(chuàng)都是來自谷歌提供的文檔 具體的應用可以下載下清濁試試嗷 起飛

總結

以上是生活随笔為你收集整理的如何评价在Android11中,/Android/data文件夹无法读写?的全部內容,希望文章能夠幫你解決所遇到的問題。

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