ホームページ >Java >&#&チュートリアル >必要な権限があるにもかかわらず、Android 10 でディレクトリを作成できないのはなぜですか?

必要な権限があるにもかかわらず、Android 10 でディレクトリを作成できないのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-14 19:04:13443ブラウズ

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

Android 10 でディレクトリを作成できません。 Android Oreo までのデバイスでは機能していましたが、作成には 2 つの方法を試しました。

Using
    File.mkdir():
  • ここで、変数 success は常に
false
File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pastebin");
if (!f.isFile()) {
    if (!(f.isDirectory())) {
        success =  f.mkdir();
    }
}
です。つまり、ディレクトリはそうではありませんcreated.

    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();
        }
    }
}

実行時権限を実装しましたおよび

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)
`

`

はすべてですset.

答え:

2019 年 3 月に初めて明らかになったように、Android 10 のロケーションではデフォルトで外部ストレージまたはリムーバブル ストレージにアクセスできなくなりました。これには、Environment.getExternalStorageDirectory() と、Environment のその他のメソッド (getExternalStoragePublicDirectory() など) が含まれます。

Android 10 および 11 の場合、マニフェストの 要素に android:requestLegacyExternalStorage="true" を追加できます。これにより、従来のストレージ モードを選択できるようになり、既存の外部ストレージ コードも機能します。

それ以外の場合、オプションは次のとおりです:

コンテキストのメソッド (getExternalFilesDir() など) を使用して、アプリが書き込み可能な外部ストレージ上のディレクトリにアクセスします。 Android 4.4 でこれらのディレクトリを使用するのに権限は必要ありません。ただし、アプリをアンインストールすると、ここに保存されているデータは削除されます。

    ストレージ アクセス フレームワーク (ACTION_OPEN_DOCUMENT や ACTION_CREATE_DOCUMENT など) を使用します。
  • コンテンツがメディアの場合、MediaStore を使用してメディアを標準のメディアの場所に配置できます。

以上が必要な権限があるにもかかわらず、Android 10 でディレクトリを作成できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。