繰り返しになりますが、以前に尋ねられて回答された質問に出くわしましたが、私の実装ではまだ機能していません。
メイン アクティビティのonCreateメソッドの開始時にgetExternalFilesDir(null)を呼び出しています。AVD で実行しても、電話 (Samsung Galaxy Plus) で実行しても、毎回 null が返されます。
はい、AndroidManifest.xml<uses-permission android:name="android.permissions.WRITE_EXTERNAL_STORAGE" />
に行があり、呼び出しを行う前に外部ストレージの状態を確認しており、マウントされています。
onCreate()メソッド内の最初の 3 行を次に示します。実際には、 super.onCreate()およびsetContentView()呼び出しの直後です。
String state = Environment.getExternalStorageState();
File extFiles = getExternalFilesDir(null);
File locFiles = getFilesDir();
したがって、これらの 3 行が実行されると、変数の値は次のようになります。
state == "mounted"
extFiles == null
locFiles == "/data/data/com.mypackage.name/files"
なぜこれが考えられるのか、誰にもアイデアがありますか?
- - -編集 - - -
だから私は別のアプローチを試みました。を使用するのではなく、使用しgetExternalFilesDir(null)
てみましたFile basePath = new File(Environment.getExternalStorageDirectory(), "myAppName");
これは理想的ではなく、Android のドキュメントにgetExternalFilesDir()
. 私は何か他のことを試さなければなりませんでしたが、それは私にとってはうまくいきませんでした。今回は関数が有効な File オブジェクトを返すため、上記の行の後の basePath のパスは/mnt/sdcard/myAppNameです。ここまでは順調ですね。DDMS で確認すると、/mnt/sdcardは存在しますが、 /mnt/sdcard/myAppNameは存在しないことがわかります。これは予想されることです。だから私は電話するboolean result = basePath.mkdirs();
しかし、これは false を返し、ファイル システムをチェックすると、myAppName サブフォルダーが作成されていないことが確認できます。DDMS を使用してフォルダーを手動で作成し、そこにファイルを配置すると、アプリケーションからそれらのファイルを読み取ることはできますが、そのフォルダーに何も書き込むことはできません。
助けてください!私は機知に富んでいます。