好好編程-物流項目19【客戶管理-更新客戶】
1190
2022-05-29
RequestLegacyExternalStorage
在Android使用fuse文件系統開始,Android針對外置存儲支持了獨立的沙箱存儲空間, 一般通過Context.getExternalFilesDir() Api獲取,該空間內的數據為應用獨有,并且不需要申請任何權限即可使用。但是當時并沒有限制應用讀寫非沙箱內的數據。但是從Android Q開始,出于數據隱私問題,Android 希望禁止應用程序操作非沙箱內的數據。 但是為了過度,Android提供了requestLegacyExternalStorage機制,來幫助應用使用原來的機制繼續讀寫存儲卡。 關于Android 存儲機制的說明請參考Android官方文檔 存儲。 新版本的適配可以參考Android Q分區存儲權限變更及適配這篇文章。本文意在說明Android 系統如何實現requestLegacyExternalStorage機制,所以這里簡單說明下,在Android Q上,是不希望應用繼續訪問非沙盒路徑的,沙盒路徑一般為外置存儲下的/storage/emulated/${userid}/Android/${dir}/${package}/, 這里通過包名來劃分路徑,應用可以不需要權限直接訪問沙盒路徑下的數據。非沙盒路徑為外置存儲下的其他路徑,不允許訪問。 為了過度,Android提供了以下策略:
Android應用程序即使獲取了讀寫存儲卡權限也不能讀寫非沙盒路徑下的數據。除非
Android應用程序獲得讀寫存儲卡權限的情況下,必須在AndroidManifest.xml的application標簽下聲明requestLegacyExternalStorage=true,才可以訪問沙盒路徑下的數據。
targetSdkVersion<29 的應用程序默認帶有requestLegacyExternalStorage=true屬性。
看到這requestLegacyExternalStorage也就是個臨時工,現在臨時工要下崗了。
預覽:使用所有文件訪問權限(MANAGE_EXTERNAL_STORAGE)
預覽文章?(2021年5月5日生效)
本文預覽了我們在2021年3月發布的政策更新中包含的更改?。
更新的文章包含有關“所有文件訪問”(MANAGE_EXTERNAL_STORAGE)權限的可接受使用的信息。這些政策更改將于2021年5月5日生效。
要查看當前的“使用所有文件訪問權限(MANAGE_EXTERNAL_STORAGE)”文章,請訪問此頁面。
出于與COVID-19相關的考慮,面向Android 11(API級別30)并要求“所有文件”訪問權限的應用只能在2021年5月之前上傳到Google Play。這包括新應用以及對現有應用的更新。此臨時上傳限制僅影響以Android 11(API級別30)為目標并請求所有文件訪問權限的應用。
目前,如果您認為您的應用需要“所有文件”訪問權限,建議您此時不要將目標SDK級別更新為Android 11(API級別30)。如果您以Android 10為目標,請考慮使用?requestLegacyExternalStorage標志。
Google Play限制使用高風險或敏感權限,包括特殊的應用訪問權限,稱為“?所有文件訪問”。這僅適用于以Android 11(API級別30)為目標并聲明MANAGE_EXTERNAL_STORAGE權限的應用程序,該應用程序已在Android 11中添加。此外,此策略不會影響READ_EXTERNAL_STORAGE權限的使用。
如果您的應用不需要訪問MANAGE_EXTERNAL_STORAGE?權限,則必須將其從應用清單中刪除才能成功發布應用。以下還詳細介紹了符合政策的替代實現。
如果您的應用符合可接受使用的政策要求或有資格獲得例外,則將需要您?使用Play控制臺中的“聲明表”聲明此權限以及任何其他高風險權限。
不符合政策要求或未提交聲明表的應用可能會從Google Play中刪除。
您什么時候應該請求“所有文件”訪問權限?
僅當您的應用無法有效利用更加隱私友好的最佳做法(例如使用Storage Access Framework或Media Store API)時,才應訪問所有文件訪問權限。
此外,應用程序對權限的使用必須在允許的使用范圍內,并且必須直接與應用程序的核心功能聯系在一起。核心功能被定義為應用程序的主要目的。沒有此核心功能,該應用程序將“損壞”或無法使用。核心功能以及組成該核心功能的任何核心功能都必須在應用程序的描述中突出顯示并進行宣傳。
所有文件訪問權限的允許使用
對于請求訪問所有文件訪問權限的應用程序,預期用途和允許使用包括;文件管理器,備份和還原應用程序,防病毒應用程序以及文檔管理應用程序。
被授予訪問權限的應用程序可能無法將其使用擴展到未公開或無效的目的。
用
合格許可*
文件管理
應用程序的核心用途涉及在其特定于應用程序的存儲空間之外的文件和文件夾的訪問,編輯和管理(包括維護)
MANAGE_EXTERNAL_STORAGE
備份和還原應用
應用程序必須需要自動訪問其特定于應用程序的存儲空間之外的多個目錄,以進行備份和還原
防病毒應用
應用程序的核心目的是掃描設備并向設備用戶提供防病毒安全功能
文件管理應用程式
必須在其特定于應用程序或共享存儲的外部查找,訪問和編輯兼容文件類型的應用程序
搜索(在設備上)
應用程序的核心目的是搜索設備外部存儲中的文件和文件夾
磁盤/文件夾加密和鎖定
應用程序的核心目的是加密文件和文件夾
設備遷移/電話轉移
App的核心目的是幫助用戶遷移到新設備
*須經Google Play審核和批準。
例外情況
在以下情況下,Google Play可能會為不符合上述指定允許使用條件的應用提供臨時例外:
使用權限可以啟用應用的核心功能;和
當前沒有其他方法可以提供核心功能。或者
使用隱私友好的替代方案(例如MediaStore API或Storage Access Framework)會對與核心功能相關的應用程序關鍵功能產生重大不利影響。
安全性和隱私最佳做法可減輕對用戶隱私的影響
開發人員必須在控制臺聲明中說明為什么Storage Access Framework或MediaStore API不足以滿足其應用程序的目的。
注意:除了需要訪問的關鍵服務之外,用于運營商和OEM服務的應用以及在托管Google Play分發平臺下發布的私人應用可能還會要求上述使用情況的權限訪問。
無效的使用
在某些情況下,應用可能希望出于存在更安全,更安全的替代選擇或數據暴露的風險不能保證訪問的目的訪問敏感的用戶數據。
下面是不會被允許請求的常見使用情況列表MANAGE_EXTERNAL_STORAGE的權限
媒體文件訪問(請參閱下面的替代方法)
用戶手動選擇單個文件的任何文件選擇活動(請參見下面的替代方法)
注意:此列表并不詳盡。有關深入指導,請參閱開發人員的“所有文件訪問”文檔和“范圍存儲”最佳實踐指南。
通用替代品
用
備擇方案
媒體文件的訪問
借助MediaStore API,應用程序可以貢獻和訪問外部存儲卷上可用的媒體,而無需訪問所有文件的權限。
開發人員應考慮使用Storage Access Framework作為?隱私友好選項,?以訪問共享存儲中的文件,例如使用Storage Access Framework。
重要提示:如果您更改了應用程序使用這些受限權限的方式,則必須再次提交包含更新且準確的信息的表單。對這些權限的欺騙性和非聲明性使用可能會導致您的應用程序暫停和/或終止您的開發人員帳戶。
*現階段requestLegacyExternalStorage可以在Android11正常使用,不會造成崩潰,如果你的應用需要在Google Play發布,那么恭喜你可以調整你的代碼了,刪除requestLegacyExternalStorage才可以呦。
當然不需要發布的話就不收影響。
于?2021 年 5 月 5 日生效的Google Play 政策更新只針對 API 級別 30 或更高版本為目標平臺且使用?MANAGE_EXTERNAL_STORAGE?權限(所有文件訪問)的應用。如果你的應用不使用或無計劃使用此權限,則此政策更新不適用于你。如果你的應用目前使用的 API 級別是 29 或更低,不需要遵守此政策,當你需要更新你的應用至 API 級別 30(Android 11)或更高版本為目標平臺時,則需遵守此政策。或者,當你更新應用至 API 級別 30(Android 11)時,你也可以不使用此權限。
Android10-11文件存儲
Android API
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。