2017-03-16 5 views
0

こんにちはすべてでサムスンのデバイスにSDカードに書き込むことができませんでした。しかし、api、dir.canWrite()は失敗し、そのパスに書き込めないことを意味します。同じことはモトxで試してみました。アンドロイド:私はマシュマロとサムスンのデバイスでSDカードにフォルダを作成しようとしています</p> <p>、マシュマロ

いくつかのいずれかplsは私

更新助ける:私はすべてのマニフェストの権限と、ランタイム許可のコードを持っている

を。

マニフェストファイル:

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

ランタイム許可コード:私はサムスンのデバイスでは、このコードを呼び出すたび

private final int WRITE_STORAGE_CODE = 10; 
@TargetApi(23) 
public boolean isStoragePermissionGrantedForWriteStorage() { 
    if (Build.VERSION.SDK_INT >= 23) { 
     if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) 
       == PackageManager.PERMISSION_GRANTED) { 
      Log.v(TAG,"Permission is granted"); 
      return true; 
     } else { 

      Log.v(TAG,"Permission is revoked"); 
      ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, WRITE_STORAGE_CODE); 
      return false; 
     } 
    } 
    else { //permission is automatically granted on sdk<23 upon installation 
     Log.v(TAG,"Permission is granted"); 
     return true; 
    } 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, 
     String permissions[], int[] grantResults) { 
    switch (requestCode) { 
     case WRITE_STORAGE_CODE: { 
      // If request is cancelled, the result arrays are empty. 
      if (grantResults.length > 0 
       && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

       File dir = new File("/storage/6A6B-1CEF/"); // This is the memory card location. 

       if(dir.canWrite()) 
       { 
        Log.d("Activity", can write here!!); 
       }else{ 
        Log.d("Activity", oops!!!!, can't write here!!);     } 
      } else { 

       // permission denied, boo! Disable the 
       // functionality that depends on this permission. 
       Log.d("Activity", permission denied); 
      } 
      return; 
     } 

     // other 'case' lines to check for other 
     // permissions this app might request 
    } 
} 

ので、その印刷私はその場所に書き込むことができません。しかし、同じコードでMoto xデバイスに書き込むことができます。

注:

私は、マシュマロは「内部ストレージ」または「ポータブルストレージ」のいずれかのようなメモリカードを持っているのオプションを持っていることを読みました。私は両方の携帯電話(サムスンとモト)でポータブルとしてメモリを選択しましたが、このコードはサムスンだけで失敗します。

+1

実行時権限を追加しましたか? – rafsanahmad007

+1

Marshmallowでは、ファイル操作を行う前にPermissionを要求する必要があります。そうしないと、SecurityExceptionが発生します。 –

+0

'しかし、api、dir.canWrite()は失敗します。そう思わないでください。この関数は、記述できない場合はfalseを返します。 – greenapps

答えて

0

マニフェストファイルに権限を追加しましたか?

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

はい、私は..質問も更新しました。 @ M.Saad Lakhan –

関連する問題