在Android 1.5 +上访问视频和照片

时间:2009-12-07 22:18:05

标签: android video photo mediastore

所以我试图让用户使用我的Android应用程序使用此处描述的方法选择特定的媒体: Access pictures from Pictures app in my android app

它的效果很好,除了我似乎只能在视频或照片之间进行选择以向用户呈现,而不是同时显示两者。是否有一个很好的方法:

  

startActivityForResult(新   意图(Intent.ACTION_PICK,   android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI)   SELECT_IMAGE);

谢谢!

4 个答案:

答案 0 :(得分:17)

我已多次使用过这个。最好的方法是:

Intent mediaChooser = new Intent(Intent.ACTION_GET_CONTENT);
//comma-separated MIME types
mediaChooser.setType("video/*, images/*");
startActivityForResult(mediaChooser, 1);

即使这不完全准确,它在我用过的所有内容中都运行良好。它将打开一个Gallery-esque活动,其中包含用户图库中每个图片/视频的缩略图列表。返回到onActivityResult()的意图有一个额外的名为“DATA”的内容://所选媒体的URI。

编辑:oops,获取您想要在传递给onActivityResult()的Intent上调用 getData()的所选媒体的URI

答案 1 :(得分:2)

Kivy - 最简单的方法是创建一个选择媒体并将其限制为视频的意图:

Intent pickMedia = new Intent(Intent.ACTION_GET_CONTENT);
pickMedia.setType("video/*");
startActivityForResult(pickMedia,12345);

注意 - 12345是您的应用在请求回拨时需要监听的整数,以便您可以在任何需要的地方发送任何信息。

然后,你需要同样的活动来监听从该意图发回的信息:

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 12345) {
            if (resultCode == Activity.RESULT_OK) {
                Uri selectedVideoLocation = data.getData();

                // Do something with the data...
            } 

        }
    }

酷?

答案 2 :(得分:1)

intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 1);

答案 3 :(得分:1)

试试这个

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
startActivityForResult(intent, 101);