3

Android デバイスのパブリック ストレージへのパスを取得したいと考えています。2つのアプリケーションがあります。1 つはいくつかのログ ファイルを書き込み、もう 1 つはそれらを読み取るために使用されます (このため、アプリケーションのプライベート ストレージを使用できません)。ファイルを簡単に作成して読み取ることができるデバイスの「パブリックスペース」のパスを取得する方法があるかどうかを知りたいです。

この解決策は私が探しているものではありません:

http://developer.android.com/guide/topics/data/data-storage.html#files内部

それもありません:

Androidで内部および外部SDカードパスを取得する方法

私の問題の簡単な解決策はありますか? 私が探しているのは外部パブリック ストレージですか?

http://developer.android.com/guide/topics/data/data-storage.html#files外部

問題は、デバイスでアプリケーションを実行するとすべて問題ないのに、メモリ カードのないデバイスでアプリケーションを実行すると動作しないことです。だから、メモリカードではない外部パブリックストレージを使いたいのですが...

以下のコードは機能しません (ファイルを保存しません)。Environment.getExternalStorageDirectory().getAbsolutePath() に直接あるディレクトリを選択すると、機能します...何が間違っていますか? :

transient private final String DIRECTORY = "/Android/data/com.aaa.bbb.ccc/files/";

public void writeLog()
{
    Calendar calendar = setDate();

    File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + DIRECTORY);
    if(!dir.exists())
        dir.mkdir();

    File file = new File (dir, "log_" + calendar.get(Calendar.YEAR) + "_"
                                 + ((calendar.get(Calendar.MONTH))+1) + "_"
                                 + calendar.get(Calendar.DAY_OF_MONTH)
                                 + ".dta");

...

}

アップデート:

このコードが機能する理由:

    File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Dir1/");
    if(!dir.exists())
        dir.mkdir();

そして、これはしません

    File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Dir1/Dir2/Dir3/");
    if(!dir.exists())
        dir.mkdir();
4

2 に答える 2

1

一部のデバイスでは、外部 SD カードのデフォルト名が として表示されextSdCard、他のデバイスではsdcard1. このコード スニペットは、その正確なパスを見つけるのに役立ち、外部デバイスのパスを取得するのに役立ちます。

String sdpath, sd1path, usbdiskpath, sd0path; 
if (new File("/storage/extSdCard/").exists()) {
    sdpath="/storage/extSdCard/";
    Log.i("Sd Cardext Path", sdpath);
}
if (new File("/storage/sdcard1/").exists()) {
    sd1path="/storage/sdcard1/";
    Log.i("Sd Card1 Path", sd1path);
}
if (new File("/storage/usbcard1/").exists()) {
    usbdiskpath="/storage/usbcard1/";
    Log.i("USB Path", usbdiskpath);
}
if (new File("/storage/sdcard0/").exists()) {
    sd0path="/storage/sdcard0/";
    Log.i("Sd Card0 Path", sd0path);
}
于 2014-05-19T12:04:24.507 に答える