10

因此,我试图允许用户使用我的 Android 应用程序使用此处描述的方法选择特定的媒体: Access Pictures from Pictures app in my android app

它工作得很好,除了我似乎只能在视频或照片之间选择来向用户展示,而不是同时选择两者。有没有一个好的方法来做到这一点:

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

谢谢!

4

4 回答 4

17

我已经用过几次了。最好的方法是:

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

即使这不是完全准确,它在我使用过的所有内容中都可以正常工作。它将打开一个画廊式的活动,其中包含用户画廊中每张图片/视频的缩略图列表。返回的意图onActivityResult()有一个名为“DATA”的额外内容,它将是所选媒体的 content:// URI。

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

于 2010-01-22T01:31:27.527 回答
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...
            } 

        }
    }

凉爽的?

于 2010-07-14T17:42:08.350 回答
1
intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 1);
于 2011-09-08T18:04:29.647 回答
1

试试这个

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
startActivityForResult(intent, 101);
于 2013-10-30T04:45:06.857 回答