3

SDカードでディレクトリを作成したいのですが、次のことを行います。

  1. 私は追加しました:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />マニフェストで。
  2. 私は root_path を取得します:public static final String ROOT_PATH = Environment.getExternalStorageDirectory().toString() + "/Hello_World/";そしてそれは戻ります /storage/emulated/0/Hello_World(デバッグ時に取得)。

次に、次のコードを実行します。

File file = new File(Constants.ROOT_PATH);
int i = 0;
while (!file.isDirectory() && !file.mkdirs()) {
    file.mkdirs();
    Log.e("mkdirs", "" + i++);
}

私も両方mkdirs()を試しましmkdir()たが、logcat(Log.e("mkdirs", "" + i++);)で無限ループを示しています。うまくいくこともありますが、うまくいかないこともあります。助けてくれてありがとう!
Update: Nexus4、nexus7、Vega Iron、Genymotion、LG G Pro など、いくつかのデバイスでコードを試してみましたが、Vega Iron だけが期待どおりに動作しました。??!!?!?

4

4 に答える 4

1

みんなありがとう、ついに私は問題を見つけました。問題はwhile()ループにあります。

if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) && !file.isDirectory()) {
file.mkdirs();
}

于 2014-03-19T08:07:39.553 に答える