从手机内存中读取图像(无SD)

时间:2012-04-26 10:35:07

标签: android image gallery sd-card

我目前正在努力解决一个问题,我希望你帮我解决......基本上我是想通过这种方式从手机的内部图库中获取一些图像

  

Intent intent = new Intent();

     

intent.setType( “图像/ *”);

     

intent.setAction(Intent.ACTION_GET_CONTENT);

     

startActivityForResult(Intent.createChooser(intent,“Select Picture”),SELECT_IMAGE);

但是当我使用此

获取onActivityResult方法中的Uri时
  

Uri images_uri = data.getData();

数据为空(当从SD卡中取出图像时不会发生这种情况)

我怎么解决?

此外,作为次要问题,如何获得超过1张图像?我阅读了有关使用ACTION_SEND_MULTIPLE的信息,但是这会打开一个选择来发送方法,而不是从哪里获取图片...

提前谢谢

2 个答案:

答案 0 :(得分:0)

试试这个

    public static final int GALLERY_CODE = 322;
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Select Picture"),
            GALLERY_CODE);


         @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { //Assinging on corresponding import
    super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == GALLERY_CODE && resultCode == RESULT_OK) {
        Uri selectedImageUri = data.getData();
        selectedImagePath = getPath(selectedImageUri);
        try {
            //add logic for coping file
        } catch (Exception e) {
            e.printStackTrace();
        }
       }

    }

    public String getPath(Uri uri) {
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(uri, projection, null, null, null);
    int column_index = cursor
            .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}

答案 1 :(得分:0)

嗯,在我的情况下,它实际上是一个错误的缓存列表(图库显示的实际上并不存在照片,所以如果我选择它们,实际的URI结果为零)。

在调用ACTION_GET_CONTENT意图之前,我建议添加以下命令:

 sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));

会告诉Gallery它应该刷新它的数据。如果你这样做,小心在你的线程中短暂睡眠(例如:

  Thread.sleep(1000);

)。这应该允许刷新操作在实际打开之前完成。在我的手机上,至少,这阻止了Gallery应用程序的短暂闪现。