2016-09-01 2 views
0

Я пытаюсь прочитать файл с внешней SD-карты в android Marshmallow 6.0.1 и хочу преобразовать в байт, но он дает fileNotFoundException , Но мой же код работает на 6.0 и ниже. Мой код выглядит следующим образом:Чтение файла с внешней SD-карты с файломNotFoundException open failed: ENOENT android Marshmallow 6.0.1

private String convertFileToByteArray(File file) { //file path as: /storage/emulated/0/abc.doc 
     byte[] byteArray = null; 
     try { 

      File f=new File(file.toString()); 
      Log.e("File EXISTs: >>",""+f.exists()); 

      //getting error in this line,giving fileNotFoundException 
      FileInputStream inputStream = new FileInputStream(file); 
      ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
      byte[] b = new byte[1024 * 11]; 
      int bytesRead = 0; 

      while ((bytesRead = inputStream.read(b)) != -1) { 
       bos.write(b, 0, bytesRead); 
      } 

      byteArray = bos.toByteArray(); 

      Log.e("Byte array", ">" + byteArray); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return Base64.encodeToString(byteArray, Base64.NO_WRAP); 
    } 

Может ли кто-нибудь предложить мне, что случилось, я здесь делаю. PS: Я также предоставляю разрешения на выполнение.

+0

Вы должны дать разрешение на применение по коду разрешения для 6.0 –

ответ

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

использование разрешения

Перейди через documentation

+0

Я сделал это уже. –

1

При использовании зефира этот код для внешнего хранения в Ьгу блоке.

public boolean isexternalStoragePermissionGranted() { 
if (Build.VERSION.SDK_INT >= 23) { 
    if (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}, 1); 
     return false; 
    } 
} 
else { //permission is automatically granted on sdk<23 upon installation 
    Log.v(TAG,"Permission is granted"); 
    return true; 
} 

} 
+0

мы не можем сделать с установкой targetSdkVersion как 22 без запроса разрешений времени выполнения. Если нет, то объясните. –

+0

Amit blow SDKVersion22 или ниже sdk не хотят проверять разрешение – Hemina

Смежные вопросы