如何在Android中从相册上传图片

21

我希望可以从我的手机图库中上传图片到我的应用程序中。在我的应用程序中有一个名为“上传”的按钮。当我点击这个按钮时,它应该跳转到图库中,如果我选择了一张图片,那么这张图片就会在应用程序中显示为缩略图。我想要从图库中上传10张图片到我的应用程序中。

3个回答

28

点击图库按钮后,按以下方式开始startActivityForResult:

startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), GET_FROM_GALLERY);

因此,在onActivityResult中检测GET_FROM_GALLERY(它是一个静态整数,您可以选择任何请求编号,例如public static final int GET_FROM_GALLERY = 3;)。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);


    //Detects request codes
    if(requestCode==GET_FROM_GALLERY && resultCode == Activity.RESULT_OK) {
        Uri selectedImage = data.getData();
        Bitmap bitmap = null;
        try {
                bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImage);
        } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
        } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
        }
    }
}

在这里,我们只能上传一张图片,但我想同时上传10张图片。现在,当我再次点击上传按钮时,它应该进入图库并在先前显示的预览图像旁边显示图像。 - user1083266
嘿,Dhruv,你如何显示它的缩略图? - Lion789
这个工作非常顺利。我不知道提问者为什么还没有选择。 - Vijay Kumar Kanta
startActivityForResult已经被弃用。这里有一种替代方法来实现此功能链接(向下滚动)。效果非常好。 - Clay

8

查看画廊:

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

并在您的应用程序中使用它:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  try {
   switch (requestCode) {

   case REQUEST_CODE:
    if (resultCode == Activity.RESULT_OK) {
     //data gives you the image uri. Try to convert that to bitmap
     break;
    } else if (resultCode == Activity.RESULT_CANCELED) {
     Log.e(TAG, "Selecting picture cancelled");
    }
    break;
   }
  } catch (Exception e) {
   Log.e(TAG, "Exception in onActivityResult : " + e.getMessage());
  }
 }

我尝试了这段代码,但我需要同时上传多张图片。此外,我需要同时获取缩略图预览。 - user1083266

5

这是正确的方法:

startActivityForResult(
  new Intent(
    Intent.ACTION_PICK,
    android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI
  ),
  GET_FROM_GALLERY
);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接