2013-11-29 4 views
0

У меня проблемы с преобразованием путь Uri от до Base64. Код хорошо работает для всех devies с API 18 и ниже. Может кому-то помочь.Ошибка преобразования пути к файлу

11-29 09:57:44.407: I/FILE_URI(23833): content://com.android.providers.media.documents/document/image%3A6108 

Это содержание, которое возвращается из пути Uri.

Ниже приведен код преобразования Base64:

public void getGalleryDetails(String path) throws FileNotFoundException { 


    InputStream inputStream = new FileInputStream(path); 
    byte[] bytes; 
    byte[] buffer = new byte[8192]; 
    int bytesRead; 
    ByteArrayOutputStream output = new ByteArrayOutputStream(); 
    try{ 
     while((bytesRead = inputStream.read(buffer)) != -1){ 
      output.write(buffer, 0, bytesRead); 
     } 
    }catch(IOException e){ 
     e.printStackTrace(); 
    } 

    bytes = output.toByteArray(); 

    encodedImage = Base64.encodeToString(bytes, Base64.DEFAULT); 
    Log.i("ENCODED", encodedImage); 
} 

ответ

0

Поскольку KITKAT имеет некоторый другой механизм обработки документов в настоящее время, я использовал следующее:

if (Build.VERSION.SDK_INT < 19) { 
        Intent intent = new Intent(); 
        intent.setType("image/*"); 
        intent.setAction(Intent.ACTION_GET_CONTENT); 
        startActivityForResult(
          Intent.createChooser(intent, "Choose Picture"), 
          FROM_GALLERY); 
       } else { 
        Intent intent = new Intent(
          Intent.ACTION_PICK, 
          android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
        startActivityForResult(intent, FROM_GALLERY); 
       } 
Смежные вопросы