从自定义音频和视频文件库中选择文件

时间:2016-10-06 17:53:04

标签: android android-intent

我创建了一个Gallery Activity,其中包含位于SD卡上的音频和视频文件列表。我有另一项活动,我希望通过该活动使用Gallery ActivityIntent中选择文件。我在清单中添加了以下intent-filter

<activity
            android:name=".Activities.GalleryActivity"
            android:icon="@drawable/gallery"
            android:label="@string/gallery"
            android:parentActivityName=".Activities.MainActivity">

            <intent-filter >
                <action android:name="android.intent.action.PICK" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="file" />
            </intent-filter>
            <intent-filter >
                <action android:name="android.intent.action.GET_CONTENT" />
                <category android:name="android.intent.category.OPENABLE" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="audio/*" />
                <data android:mimeType="video/*" />
            </intent-filter>
        </activity>

以下是我创建Intent以选择文件的方式:

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

编辑: 以下是onClickListener的项Gallery Activity

viewAdapter.withOnClickListener(new FastAdapter.OnClickListener<GalleryRowContent>() {
            @Override
            public boolean onClick(View v, IAdapter<GalleryRowContent> adapter, GalleryRowContent item, int position) {

                if (adapter.getFastAdapter().getSelections().size() == 0) {

                    if (item.getTag().equals("audio")) {
                        Intent intent = new Intent();
                        intent.setAction(android.content.Intent.ACTION_VIEW);
                        File file = new File(item.getFilePath());
                        intent.setDataAndType(Uri.fromFile(file), "audio/*");
                        startActivity(intent);

                    } else if (item.getTag().equals("video")) {
                        Intent intent = new Intent();
                        intent.setAction(android.content.Intent.ACTION_VIEW);
                        File file = new File(item.getFilePath());
                        intent.setDataAndType(Uri.fromFile(file), "video/*");
                        startActivity(intent);
                    }
                }

                return false;
            }
        });

此代码在意图选择器中显示我的应用程序并打开Gallery Activity,但是当我单击任何文件时,它会打开选​​择它的文件。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

要从startActivityForResult()开始的活动返回结果,请致电setResult(),提供包含“结果”的Intent。通常,紧接着调用finish(),因此控制权返回到调用startActivityForResult()的活动,因此它可以使用结果。