Android開發 Android10及10+讀取外部存儲問題

前提 : 在做文件遍歷時,有的文件在Android10+無法訪問,在注冊清單下添加android:requestLegacyExternalStorage="true"后可正常訪問,但一直不知道具體原因。
使用XXPermissions時讀到Android10分區存儲后才明白這里的邏輯。

1 概述

Android10使用了分區存儲機制,詳細內容可參考Android 10 分區存儲完全解析,寫得十分詳細。

簡單描述即:分區存儲就是對外部存儲(sdcard,/storage/emulated/0下的公共目錄)進行重新設計,App對外部共享文件的訪問需要通過 MediaStrore API 和 Storage Access Framework 來訪問;而外部私有文件角度看則無法讀寫自己應用以外創建的其他文件。
內部私有存儲文件(/data/data/packagename/)未進行變更
在這里插入圖片描述

2 使用

目前我的做法(參考XXPermissions):
Android10及以下

  • 在 manifest 中設置 requestLegacyExternalStorage 屬性為 true
  • 申請READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE
    Android10+
  • 在 manifest 中設置 requestLegacyExternalStorage 屬性為 true
  • 申請MANAGE_EXTERNAL_STORAGE 權限

2.1 兼容使用

Target 小于等于 Android 9(API 28)
Target 大于等于 Android 10 (API 29),在 manifest 中設置 requestLegacyExternalStorage 屬性為 true

<manifest ... ><!-- This attribute is "false" by default on apps targetingAndroid 10 or higher. --><application android:requestLegacyExternalStorage="true" ... >...</application>
</manifest>

2.2 分區存儲

后續更新,可先參考https://www.jianshu.com/p/af9903069ebe

文章參考
https://github.com/getActivity/XXPermissions
https://blog.csdn.net/wanliguodu/article/details/120297395
https://www.jianshu.com/p/af9903069ebe

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/89678.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/89678.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/89678.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IP地理定位技術綜述:理論、方法與應用創新(三)

[1]劉學婷,臺文鑫,周帆,等.IP地理定位技術綜述:理論、方法與應用創新[J].通信學報,2025,46(04):33-48. 2 IP地理定位應用場景 基于 IP 地理定位技術的特性和多樣化應用場景,本文將其主要應用分為地理定位服務、網絡安全與優化、網絡空間測繪3類,如圖7所示。基于IP地理定位…

16-C#生成DLL與調用

C#生成DLL與調用 1.2.3.4.5.將DLL文件復制到DEBUG下6.7.8.private void button79_Click(object sender, EventArgs e) {ClassLibrary1.Class1 testnew ClassLibrary1.Class1();UInt16 aConvert.ToUInt16(textBox67.Text);UInt16 b Convert.ToUInt16(textBox68.Text);label90.T…

JSON解析工具哪家強?

一、研究背景與目的 在現代Java應用開發中&#xff0c;JSON數據格式的解析性能直接影響系統響應速度與吞吐量。當處理高并發請求或大規模數據轉換時&#xff0c;解析工具的選擇尤為關鍵。本文通過JMH&#xff08;Java Microbenchmark Harness&#xff09;基準測試框架&#xf…

Go語言動態數據訪問實戰

Go語言反射實戰&#xff1a;動態訪問商品數據中的復雜字段 前言 在電商或倉儲管理系統中&#xff0c;商品信息結構復雜且經常變化。比如商品有基本屬性&#xff08;ID、名稱、類型&#xff09;&#xff0c;還有動態擴展屬性&#xff08;規格、促銷信息、庫存詳情等&#xff0…

[特殊字符] Excel 按月篩選 + 工作表復制 + 樣式批量處理 —— Python 自動化大匯總

本教程展示如何使用 Python 的 openpyxl 實現&#xff1a; 多工作表遍歷&#xff1a;自動查找每月物料表&#xff1b; 條件篩選&#xff1a;獲取 G 列數量大于 1000 的記錄&#xff1b; 生成匯總表&#xff1a;從模板復制頁面并寫入篩選結果&#xff1b; 統一樣式&#xff1…

Text2SQL主流實現方案

目錄 基于 Prompt Engineering 的方案 基于模型微調的方案 T5 模型結構 MIGA 基于RAG 的方案 參考 基于 Prompt Engineering 的方案 這類方案比較簡單粗暴,就是通過精心設計的提示來引導 LLM 生成 SQL,一般包含下面這些做法: 1. 零樣本提示:直接向 LLM 提供數據庫…

有哪些開源的SSO框架?

SSO&#xff08;Single Sign-On&#xff09;是一種身份驗證機制&#xff0c;允許用戶通過一次登錄訪問多個相互信任的系統或應用&#xff0c;無需重復輸入憑證。核心目標是提升用戶體驗和安全性&#xff0c;減少密碼疲勞和管理成本。?一、常見開源SSO框架概覽?開源SSO框架主要…

LoRA 問答微調與部署全流程:基于 LLaMA-Factory + DeepSeek + FastAPI 打造專屬大模型

想快速掌握大模型落地實戰&#xff1f;本文將手把手教你完成一個國產大模型的微調任務&#xff0c;并通過 FastAPI 向后端暴露接口。特別適合希望快速將大模型應用于實際業務的開發者。 &#x1f4cc; 本文為《LoRA 應用實錄》系列第 3 篇&#xff0c;在第一篇里講解了LoRA在 …

分布式部署下如何做接口防抖---使用分布式鎖

防抖也即防重復提交&#xff0c;那么如何確定兩次接口就是重復的呢&#xff1f;首先&#xff0c;我們需要給這兩次接口的調用加一個時間間隔&#xff0c;大于這個時間間隔的一定不是重復提交&#xff1b;其次&#xff0c;兩次請求提交的參數比對&#xff0c;不一定要全部參數&a…

【Java工程師面試全攻略】Day10:系統性能優化全鏈路實踐

一、性能優化的多維視角 系統性能優化是區分普通開發者與高級工程師的關鍵能力指標。根據Google的研究&#xff0c;性能優化帶來的用戶體驗改善可以直接轉化為商業收益——頁面加載時間每減少100ms&#xff0c;亞馬遜的銷售額就增加1%。今天我們將從全鏈路視角剖析性能優化的方…

在kotlin中如何更好的理解 高階函數

在 Kotlin 中&#xff0c;高階函數的本質是「將函數作為商品流通的交易模式」。 核心需求&#xff1a;傳統函數只能操作數據&#xff08;如數字、字符串&#xff09;&#xff0c;但實際開發中常需復用邏輯流程&#xff08;如「先校驗參數&#xff0c;再執行操作」的流程適用于…

15-C#的scottplot控件庫繪制曲線圖

C#的scottplot控件庫繪制曲線圖 1.使用Nuget 安裝scottplot控件庫2.繪制柱狀圖private void button54_Click(object sender, EventArgs e){double[] values { 5, 10, 7, 13, 22, 18, 33, 16 };formsPlot1.Plot.Add.Bars(values);formsPlot1.Refresh();}3.中文標題顯示問題 for…

使用jiaminghi/data-view-react, 本地調試能顯示,發布就不顯示|不成功(版本沖突)

你遇到的問題是&#xff1a; 使用 jiaminghi/data-view-react&#xff08;也就是 DataV 可視化組件庫&#xff09;&#xff0c;本地調試沒問題&#xff0c;但發布后打包上線卻不顯示圖表/組件。 ? 常見原因&#xff08;很大概率命中&#xff09; 1. CSS 或字體資源路徑丟失 …

網絡層:ip協議 與數據鏈路層

目錄 網絡層 引子與前置知識 一、協議格式 二、網段劃分(重要) 三、特殊的IP地址 四、IP地址的數量限制 五、私有IP地址和公網IP地址 六、理解運營商和全球網絡 七、路由 八、協議格式補充 數據鏈路層 一、以太網幀格式 二、局域網的通信原理 三、認識MTU 四、…

Nginx入門進階:從零到高手的實戰指南

Nginx 入門與進階玩法指南 一、什么是 Nginx&#xff1f; Nginx&#xff08;Engine X&#xff09;是一個高性能的 HTTP 和反向代理服務器&#xff0c;同時也可以作為 IMAP/POP3/SMTP 郵件代理服務器。它最初由俄羅斯程序員 Igor Sysoev 開發&#xff0c;用于解決高并發下 Apa…

NPM組件 alan-baileys 等竊取主機敏感信息

【高危】NPM組件 alan-baileys 等竊取主機敏感信息 漏洞描述 當用戶安裝受影響版本的 alan-baileys 組件包時會竊取用戶的主機名、用戶名、工作目錄、IP地址等信息并發送到攻擊者可控的服務器地址。 MPS編號MPS-wkyd-5v7r處置建議強烈建議修復發現時間2025-07-02投毒倉庫npm…

Python爬蟲實戰:研究httplib2庫相關技術

1. 引言 1.1 研究背景與意義 隨著互聯網的快速發展,網絡上的信息量呈爆炸式增長。如何從海量的網頁中高效地獲取有價值的數據,成為了當前信息技術領域的一個重要研究課題。網絡爬蟲作為一種自動獲取互聯網信息的程序,能夠按照一定的規則,自動地抓取網頁內容并提取和整理信…

【C++】簡單學——模板初階

模板&#xff08;template&#xff09; 泛型編程&#xff0c;讓編譯器把我們不想干的事情給干了 類似于typedef&#xff0c;解決了typedef使用不方便地原因&#xff08;雖然看似寫少了&#xff0c;其實只是編譯器做多了&#xff09; 例如&#xff1a; 生成兩個棧&#xff0c;…

X-Search:Spring AI實現的AI智能搜索

X-Search AI智能搜索 X-Search使用Spring AI和Spring AI Alibab Graph實現的AI智能搜索系統。 gitee:https://gitee.com/java-ben/x-search github:https://github.com/renpengben/x-search 核心功能 快速開始 git clone https://github.com/renpengben/x-search.git 1.申請…

一臺香港原生ip站群服務器多少錢?

一臺香港原生ip站群服務器多少錢&#xff1f;在香港地區租用原生 IP 站群服務器的價格受多重因素影響&#xff0c;不同配置和服務的組合會導致費用差異顯著。以下是詳細分析&#xff1a;一、影響香港原生 IP 站群服務器價格的核心因素IP 資源成本&#xff1a;原生 IP 由于其注冊…