0

Androidアプリの外部ストレージにディレクトリを作成する場合、次のコードを使用します:

File mDirectory = new File(Environment.getExternalStorageDirectory() + "/myDir");

        if (!mDirectory.exists()) {

            mDirectory.mkdirs();

            if (!mDirectory.mkdirs()) {
                Log.e("App", "failed to create directory");
            }
        }

しかし、ディレクトリは作成されず、常に次のエラーメッセージが表示されましたlogcat:

App: failed to create directory

mkdir()との両方も使用しますmkdirs()が、結果は同じです。間違いはどこですか?

更新しました:

AndroidManifest.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
4

2 に答える 2

1

このアプリを実行している Android のバージョンは何ですか? Android Developer Websiteからのこの引用は言う

デバイスでAndroid 6.0 (API レベル 23) 以降が実行されていて、アプリの targetSdkVersion が 23 以降の場合、アプリは実行時にユーザーにアクセス許可を要求します。ユーザーはいつでもアクセス許可を取り消すことができるため、アプリは実行するたびにアクセス許可があるかどうかを確認する必要があります

デバイスが Android 5.1 (API レベル 22) 以下を実行している場合、またはアプリの targetSdkVersion が 22 以下である場合、システムは、ユーザーがアプリをインストールするときに権限を付与するようユーザーに求めます。

現在、Dangerous permissionsという概念があります。これは、ユーザーが実行時に付与する必要があるアクセス許可であり、そのWRITE_EXTERNAL_STORAGE1 つです。

Android Dev ウェブサイトのこのチュートリアルでは、実行時にパーミッションをリクエストする方法を説明します

于 2016-09-04T12:26:36.573 に答える
1

mkdirsあなたは2回電話しています。最初の呼び出しでディレクトリが作成されます。ディレクトリがすでに存在するため、2 番目の呼び出しは false を返します。

于 2016-09-04T12:16:53.017 に答える