android - Intent.ACTION_VIEW - 多个文件

标签 android android-intent

我有显示多个文件的要求(图像、音乐或视频各有 2 个或更多,但只有一种类型)。给定一系列缩略图或文件名,用户应该能够选择一个复选框并预览选择。如果用户选择多张图片,我希望能够只显示那些选择的图片。如果他选择了多个 mp3 文件,我希望只能播放那些歌曲。

如果用户只选择一个文件,那很容易做到:

Intent i = new Intent(Intent.ACTION_VIEW);  

if (someType == IMAGE) {
   i.setDataAndType(Uri.fromFile(imageFile),"image/*");
}
else 
   if (sometype == VIDEO) {
      i.setDataAndType(Uri.fromFile(videoFile),"video/mp4");
   }
   else if (someType == MUSIC) {
       i.setDataAndType(Uri.fromFile(musicFile),"audio/mpeg");
   }  
startActivity(i);

但是,如果用户选择了一种类型中的两种或多种,​​我如何构建使用用户可能已安装的任何图像/音频/视频应用程序的 Intent ?不想编写自定义播放器/查看器,因为我知道现有的应用程序可以做到这一点。

我正在尝试模仿名为“AllShare Play”(https://www.samsung.com/us/2012-allshare-play/) 的云应用程序的功能。这个应用程序完全符合我在我的应用程序中需要做的事情 - 允许用户“预览”多个文件,并且只使用标准的“画廊”应用程序来显示图像,使用标准的音乐应用程序来播放歌曲等。在每种情况下,只有选择的文件使用每个 Android 设备加载的标准应用程序显示或播放,所以我知道无需编写查看器或播放器即可完成。

有人知道如何通过 Intent.ACTION_VIEW 将多个文件发送到外部应用程序吗?

最佳答案

没有将多路发送到 ACTION_VIEW 的 android 标准。

但是ACTION_SEND_MULTIPLE有一个标准文件通过 EXTRA_STREAM 传输的位置。

有关工作的 sendmultible 示例,请参阅 Secure-Photo-Viewer :您从图库应用程序中选择多张图片并将它们发送到 Secure-Photo-Viewer。

如果您的应用是此 Intent 的唯一发送者和接收者,您也可以对 ACTION_VIEW 使用相同的机制。

要了解有关 Intent 通信的更多信息,您可以使用 intent-intercept允许发送和接收多种类型 Intent 的应用

这是我用来发送多张图片的代码

        Intent sendIntent = new Intent();
        sendIntent.setType("image/*");
        if (selectionCount == 1) {
            Long imageId = mSelectedItems.first();
            sendIntent.setAction(Intent.ACTION_SEND);
            sendIntent.putExtra(EXTRA_STREAM, getUri(imageId));
        } else {
            sendIntent.setAction(Intent.ACTION_SEND_MULTIPLE);

            ArrayList<Uri> uris = new ArrayList<Uri>();

            for (Long mSelectedItem : mSelectedItems) {
                uris.add(getUri(mSelectedItem));
            }
            sendIntent.putParcelableArrayListExtra(EXTRA_STREAM, uris);
        }
        startActivity(sendIntent);

关于android - Intent.ACTION_VIEW - 多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15601292/

相关文章:

android - 如何获取工具栏上使用的 "up"按钮?

android - 如何从android以编程方式设置调频 radio 的频率

android - Activity 从 MapActivity 切换到 Activity

android - 我们可以在 SQLite 数据库(Android)中存储 .doc .pdf 和 .jpg 文件吗?

android - Dalvik JIT 工作流程

java - 无限循环,如何知道 Eclipse 中现在正在运行什么代码?

android - 麻省理工学院 App Inventor 2 : May I/How to place alarms in the Android notification area?

android - 如何使 Activity 出现在 "Choose file"对话框中?

android - OneSignal - 单击推送后无法打开 Activity

android - 远程完成 Android Activity