2015-12-12 8 views
1

Я попытался вернуть реальный путь к фотографии, сохраненный на моем телефоне Android. Он работает на моем телефоне 4.4.2, но при использовании телефона 5.0.2 возвращаемый путь равен 0:Android: Получение пути от mediaStore после выбора из приложения для Android-галереи

Это мой код, который дает реальный путь к фотографии из файла намерения.getData как Uri (content: // com. android.providers.media.documents/документ/изображение% 3A3061),

String[] proj = { MediaStore.Images.Media.DATA }; 
    CursorLoader loader = new CursorLoader(GlobalApplication.getContext(), photoUri, proj, null, null, null); 
    Cursor cursor = loader.loadInBackground(); 
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    String result = cursor.getString(column_index); 
    cursor.close(); 
    return result; 

И это код, который я начала галерея приложения:

Intent intent = new Intent(); 
     intent.setType("image/*"); 
     intent.setAction(Intent.ACTION_GET_CONTENT); 
     startActivityForResult(Intent.createChooser(intent, "Select Picture"),MobileConstant.newInstance().REQUEST_CODE_GALLERY); 

ответ

0

Intent для выбора изображения из галереи

Intent intent = new Intent(Intent.ACTION_PICK, 
    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
intent.setType("image/*"); 
startActivityForResult(intent, reqCode); 

В методе onActivityResult

@Override 
     public void onActivityResult(int requestCode, int resultCode, Intent data) { 
      // TODO Auto-generated method stub 
      super.onActivityResult(requestCode, resultCode, data); 

      try { 
       if (resultCode == Activity.RESULT_OK) { 
        if (requestCode == reqCode) { 
         if (data != null) { 
          String realPath=getRealPathFromURI(data.getData()); 
         } 
        } 
       } 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 


private String getRealPathFromURI(Uri contentUri) { 
     Cursor cursor = null; 
     try { 
      String[] proj = { MediaStore.Images.Media.DATA }; 
      cursor = getActivity().getContentResolver().query(contentUri, proj, 
        null, null, null); 
      int column_index = cursor 
        .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
      cursor.moveToFirst(); 
      return cursor.getString(column_index); 
     } finally { 
      if (cursor != null) { 
       cursor.close(); 
      } 
     } 
    } 
0
//To get picture from gallery or camrea 
if (Build.VERSION.SDK_INT < 19) { 
       Intent intent = new Intent(); 
       intent.setType("image/jpeg"); 
       intent.setAction(Intent.ACTION_GET_CONTENT); 
       startActivityForResult(Intent.createChooser(intent, "Complete action using"), 200); 
      } else { 
       Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); 
       intent.addCategory(Intent.CATEGORY_OPENABLE); 
       intent.setType("image/jpeg"); 
       startActivityForResult(intent, 300); 
      } 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
//To get result 
if (requestCode == 200) { 
     Uri selectedImage = data.getData(); 
     Log.d("Uri", selectedImage.toString()); 
     startCropImage(selectedImage); 
    } 
    else if (requestCode == 300) { 
     Uri originalUri = data.getData(); 
     final int takeFlags = data.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 
     //noinspection ResourceType 
     getContentResolver().takePersistableUriPermission(originalUri, takeFlags); 
     Log.d("Uri", originalUri.toString()); 
     startCropImage(originalUri); 
    } 
} 
2

Я его рабочий с помощью этого:

Cursor cursor = GlobalApplication.getContext().getContentResolver().query(photoUri, null, null, null, null); 
    cursor.moveToFirst(); 
    String document_id = cursor.getString(0); 
    document_id = document_id.substring(document_id.lastIndexOf(":")+ 1); 
    cursor.close(); 

    cursor = GlobalApplication.getContext().getContentResolver().query(
      android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
      null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null); 
    cursor.moveToFirst(); 
    String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA)); 
    cursor.close(); 

    return path; 

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

  • Нет связанных вопросов^_^