2013-12-12 79 views
3

采摘的图像我使用以下Intent允许用户选择照片从新的照片应用程序

Intent pictureIntent = new Intent(); 
pictureIntent.setType("image/*"); 
pictureIntent.setAction(Intent.ACTION_PICK); 
startActivityForResult(pictureIntent, GALLERY_PICK_IMAGE_REQUEST); 

得到结果之后,我使用下面的方法(using this method

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == GALLERY_PICK_IMAGE_REQUEST) { 
     if (resultCode == mActivity.RESULT_OK) { 
      Uri selectedImage = data.getData(); 
      Log.d(TAG, "Gallery image path = " + selectedImage.getPath()); 
      launchUploadImageActivity(getRealPathFromURI(mActivity, selectedImage)); 
     } 
    } 
} 

private String getRealPathFromURI(Context context, Uri contentUri) { 
    Cursor cursor = null; 
    try { 
     String[] proj = { MediaStore.Images.Media.DATA }; 
     cursor = context.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(); 
     } 
    } 
} 

当我使用新的Photos应用程序来选择图片时,我可以选择一张我认为是在谷歌服务器上的照片,因为它会将url返回到图片而不是文件路径:

日志输出: 画廊图像路径=/0/https://lh6.googleusercontent.com/lRkls4SQwi_afJvjO5QChsWqRwTpDjg- ....

有没有什么办法可以强制用户选择是在手机上本地图片?

+0

我被困在这里同样的问题天。任何解决方案 –

回答

0

尝试用下面的代码来选择画面,而不是

Intent pictureIntent = new Intent(); 
pictureIntent.setType("image/*"); 
pictureIntent.setAction(Intent.ACTION_PICK); 
startActivityForResult(pictureIntent, GALLERY_PICK_IMAGE_REQUEST); 
+1

嗯,我仍然可以选择一个在谷歌+ – AlexBrand

0

Intent pictureIntent = new Intent(MediaStore.ACTION_PICK, Images.Media.INTERNAL_CONTENT_URL); 
startActivityForResult(pictureIntent, REQUEST_CHOOSE_IMAGE); 

此行添加到您的意图:

pictureIntent.setData(Images.Media.INTERNAL_CONTENT_URI);