2016-06-01 15 views
0

外部ストレージにディレクトリを作成したいが、作成できません。外部ストレージにディレクトリを作成するには?

これは私のコードです:

String path = Environment.getExternalStorageDirectory().toString(); 
    File dir = new File(path,"/appname/media/appimages/"); 
    if (!dir.isDirectory()) { 
     dir.mkdirs(); 
    } 

    File file = new File(dir, "image" + ".jpg"); 
    String imagePath = file.getAbsolutePath(); 
    //scan the image so show up in album 
    MediaScannerConnection.scanFile(this, 
      new String[] { imagePath }, null, 
      new MediaScannerConnection.OnScanCompletedListener() { 
       public void onScanCompleted(String path, Uri uri) { 

       } 
      }); 


    File file1 = new File(Environment.getExternalStorageDirectory().getPath() + "/MeaVita"); 

    file1.mkdir(); 


    // imageRoot.mkdirs(); 

    Log.d("directory",dir.getAbsolutePath().toString()); 

I)は、(両方とも使用してmkdirs()およびMKDIRを試してみました。しかし、どちらもうまくいきません。パスストレージ/ emulated/0 /にフォルダが表示されません。

私はアンドロイド23.0以降でこれを実行しています。また、私はパーミッションを追加しました。

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

誰かが自分のコードで間違っていることを知っていますか?

ありがとうございます。

+0

初心者のためにただ一つのフォルダを作成してみてください。 –

+1

あなたはアクセス権を要求していますか?アクセス権(読み取りと書き込みのような)が必要です。ストレージに読み書きする前にアクセスする必要があります。 –

答えて

0

私が代わりに23の22に切り替えるために...そのアクセス許可の問題..迅速なソリューションを、それをチェックしたり、ランタイムを参照してください。パーミッションを処理する必要があります。link

1

実行時にチェックする必要がある特定の権限であればユーザーがそれらを受け入れるあなたは、このようなメソッドを作成することによって、それを行うことができます:あなたがあなたのストレージにアクセスする前に

private void checkFilePermissions() { 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
     int hasWriteExternalStoragePermission = checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE); 
     if (hasWriteExternalStoragePermission != PackageManager.PERMISSION_GRANTED) { 
      requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 
        REQUEST_CODE_ASK_PERMISSIONS); 
     } 
    } 
} 

をし、それを使用し

+0

..ありがとうございます。ユーザーはストレージにアクセスすることを知っていますか?私はアプリの開始時に画像を保存するために私のアプリのデフォルトのフォルダを作成したいと思っています。だから、なぜこのアプリに今のパーミッションが必要なのか、ユーザーにとっては混乱していますか? @Dennis van Opstal – Sid

+0

また、アプリをインストールすると、アプリをインストールするたびに尋ねられません。私はデバッグを試みたときに一度だけ、許可を求めました。 onCreateメソッドの起動アクティビティの開始時にこのメソッドを呼び出しました。 @Dennis van Opstal – Sid

+0

私は何が間違っているのか分かりません。私はデバッグをするときに許可を求めています。しかし、私はアプリを実行するときはありません。なぜそうなのか? @Dennis van Opstal – Sid