首頁 > Java > java教程 > 為什麼即使具有必要的權限,我也無法在 Android 10 中建立目錄?

為什麼即使具有必要的權限,我也無法在 Android 10 中建立目錄?

Susan Sarandon
發布: 2024-12-14 19:04:13
原創
440 人瀏覽過

Why Can't I Create a Directory in Android 10, Even with Necessary Permissions?

Android 10 中無法建立目錄的問題

I'm unable to create directory in Android 10. It's working on devices tilling Android . I tried two ways for creating folders.

  • Using File.mkdir():
File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pastebin");
if (!f.isFile()) {
    if (!(f.isDirectory())) {
        success =  f.mkdir();
    }
}
登入後複製

Here, the variable success is always>Here, the variable success is always> which means the directory isn't created.

  • Using Files.createDirectory():
File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pastebin");
if (!f.isFile()) {
    if (!(f.isDirectory())) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            try {
                Files.createDirectory(Paths.get(f.getAbsolutePath()));
            } catch (IOException e) {
                e.printStackTrace();
                Toast.makeText(getApplicationContext(), R.string.unable_to_download, Toast.LENGTH_LONG).show();
            }
        } else {
            f.mkdir();
        }
    }
}
登入後複製

which causes thisception> I've implemented the run-time permissions and

pzy64.pastebinpro W/System.err: java.nio.file.AccessDeniedException: /storage/emulated/0/Pastebin
pzy64.pastebinpro W/System.err:     at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:391)
pzy64.pastebinpro W/System.err:     at java.nio.file.Files.createDirectory(Files.java:674)
登入後複製
`

are all set.


答案:

從2019 年3 月首次披露的那樣,您不再能默認訪問Android 10 上外部存儲或可移動存儲中的任意位置。這包括 Environment.getExternalStorageDirectory() 和 Environment 上的其他方法(例如,getExternalStoragePublicDirectory())。 對於 Android 10 和 11,您可以將 android:requestLegacyExternalStorage="true" 加入清單中的 元素。這會讓您選擇傳統的儲存模式,您現有的外部儲存代碼也會運作。

否則,您的選擇是:

使用 Context 上的方法(例如 getExternalFilesDir())來存取外部儲存上您的應用程式可以寫入的目錄。您無需任何權限即可在 Android 4.4 上使用這些目錄。但是,當您的應用程式卸載時,儲存在此處的資料將被刪除。

使用儲存存取框架(例如 ACTION_OPEN_DOCUMENT 和 ACTION_CREATE_DOCUMENT)。
  • 如果您的內容是媒體,可以使用 MediaStore 將媒體放置在標準媒體位置。

以上是為什麼即使具有必要的權限,我也無法在 Android 10 中建立目錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板