android에서 로컬 그림 경로를 가져오는 데 실패했습니다,cursor.getString(column_index);반환

7554 단어 평범한 길
오늘 필요한 것은 바로 휴대전화 로컬 사진을 얻은 다음에 QR코드 해석 결과를 가져와 웹 페이지를 돌리는 것이다!
전에 제가 그림을 얻은 코드는 이렇게 썼어요.
/*
 *              
 */
public void pickPictureFromAblum(View v) {
   //          
   Intent innerIntent = new Intent(Intent.ACTION_GET_CONTENT); 
   innerIntent.setType("image/*");
   Intent wrapperIntent = Intent.createChooser(innerIntent, "       ");
   this.startActivityForResult(wrapperIntent, 1);
}

힘의 코드를 얻는다
Uri uri = data.getData();
if (!TextUtils.isEmpty(uri.getAuthority())) {

    Cursor cursor = getContentResolver().query(uri, new String[] { MediaStore.Images.Media.DATA }, null, null, null);
   if (null == cursor) {
      Toast.makeText(this, "     ", Toast.LENGTH_SHORT).show();
      return;
   }

    cursor.moveToFirst();
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    photo_path = cursor.getString(column_index);
    cursor.close();
} else {
   photo_path = data.getData().getPath();
}

이전에 나는 테스트기에서 운행한 후에 힘을 얻을 수 있었지만, 나중에 4.4버전 이후로 줄곧 그림의 경로를 얻지 못했다는 것을 발견하고, 나중에 인터넷에 접속하여 자료를 찾아보니
이런 방법은 갤러리를 호출해서 그림을android4에서 가져옵니다.4 버전 이전에는 가능하지만 이후에는 불가능합니다.근본 원인은 전자와 후자가 되돌아오는 URI가 이미 같지 않기 때문이다. 전자의 URI에는 파일의 절대 경로가 포함되어 있고데이터의, 하지만 후자 URI는 없습니다.그래서 너는 못 가져!<4.4 URI:content://media/external/images/media/164파일이 포함된 절대 경로 4.4URI:content://com.android.providers.media.documents/document/image:3951파일의 상대 번호만 반환됩니다.
최후의 해결 방법은 사실 매우 간단하다. 바로 Intent이다.ACTION_GET_CONTENT를 Intent로 변경합니다.ACTION_PICK
Intent innerIntent = new Intent(Intent.ACTION_PICK); // "android.intent.action.GET_CONTENT"
innerIntent.setType("image/*");
Intent wrapperIntent = Intent.createChooser(innerIntent, "       ");
this.startActivityForResult(wrapperIntent, 1);

간단한 버그지만 뒤에 형제의 같은 문제가 생기지 않도록 뭔가를 남겨두세요.

좋은 웹페이지 즐겨찾기