Android デバイスのパブリック ストレージへのパスを取得したいと考えています。2つのアプリケーションがあります。1 つはいくつかのログ ファイルを書き込み、もう 1 つはそれらを読み取るために使用されます (このため、アプリケーションのプライベート ストレージを使用できません)。ファイルを簡単に作成して読み取ることができるデバイスの「パブリックスペース」のパスを取得する方法があるかどうかを知りたいです。
この解決策は私が探しているものではありません:
http://developer.android.com/guide/topics/data/data-storage.html#files内部
それもありません:
私の問題の簡単な解決策はありますか? 私が探しているのは外部パブリック ストレージですか?
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();