簡體   English   中英

通過在帶有目標 SDK 29 的 Android 10 上啟用傳統外部存儲,究竟是什么選擇退出范圍存儲

[英]what exactly opt out from scoped storage by enabling the legacy external storage on Android 10 with target SDK 29

在定位到 SDK 29 時,可以選擇選擇范圍存儲。通過在清單文件中添加 android:requestLegacyExternalStorage="true" 來啟用舊存儲。 我的應用程序的現有功能不適用於 Android 10。

例如

  1. 無法訪問公共目錄 getExternalStorageDirectory()
  2. 無法調用 mkdir() 方法
  3. 無法通過 DownloadManager 等下載文件。

我想知道通過啟用傳統外部存儲從范圍存儲中選擇退出的確切內容。

因為根據我的理解,我們仍然必須在 android 10 上使用新的外部存儲分類。

存儲路徑的 DownloadManager 代碼片段:

DownloadManager.Request  request=new DownloadManager.Request(Download_Uri);
request.setDestinationInExternalPublicDir("/mappfolder/subdirectory", filename);

清單應用程序標簽:

<application
        android:requestLegacyExternalStorage="true"
        android:name=".base.module.view.MyApplication"
        android:allowBackup="false"
        android:icon="@drawable/im_launcher"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:networkSecurityConfig="@xml/network_security_config"
        android:supportsRtl="false"
        android:theme="@style/myThemeNOActionBar"
        tools:replace="android:supportsRtl"
        >

API 29 中不推薦使用 getExternalStorageDirectory()。請使用 getExternalFilesDir()。

如果您使用舊的外部存儲,您的應用程序需要權限,例如 WRITE_EXTERNAL_STORAGE 和 READ_EXTERNAL_STORAGE。 但是很快就會強制執行范圍存儲,因此您應該更改代碼以使用 MediaStore API 和/或存儲訪問框架。

通過啟用舊存儲,可以使用舊文件系統 API 將特定於應用程序的目錄創建到公共目錄中,並訪問公共存儲以讀取/寫入文件。

但是使用 DownloadManger,無法將特定於應用程序的目錄創建到公共存儲中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM