2017-03-16 5 views
0

Bonjour à tous,Android: ne peut pas écrire dans sdcard dans l'appareil samsung avec guimauve

Je suis en train de créer un dossier dans la carte SD dans l'appareil Samsung avec guimauve. Mais l'API, dir.canWrite() échoue ce qui signifie que je ne peux pas écrire sur ce chemin. Le même que j'ai essayé dans moto x, son fonctionnement.

quelqu'un pls me aider

Mise à jour:

avoir toutes les autorisations dans le Manifest ainsi que le code d'autorisation d'exécution.

fichier Manifest:

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

Runtime Code d'autorisation:

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 
    } 
} 

Donc, chaque fois que j'appelle ce code dans l'appareil Samsung, son impression que je ne peux pas écrire dans cet endroit. Mais le même code me permet d'écrire en Moto x.

Note:

J'ai lu que Marshmallow a les options pour avoir la carte mémoire soit « stockage interne » ou « stockage portable ». J'ai choisi la mémoire comme portable dans les deux mobiles (Samsung et Moto) mais ce code échoue seulement dans Samsung.

+1

Avez-vous ajouté des autorisations d'exécution? – rafsanahmad007

+1

Dans Marshmallow, vous devez demander l'autorisation avant d'effectuer des opérations sur les fichiers, sinon cela donnera SecurityException. –

+0

'Mais l'API, dir.canWrite() échoue'. Ne le pense pas. Cette fonction retournera false si on ne peut pas écrire. – greenapps

Répondre

0

avez-vous ajouté une autorisation dans votre fichier manifeste?

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

Oui, j'ai .. J'ai mis à jour la question aussi. @ M.Saad Lakhan –