android – Intent.ACTION_VIEW – 多个文件

我需要显示多个文件(每个图像,音乐或视频2个或更多,但只有一个类型).给定一系列缩略图文件名,用户应该能够选择chekBox并预览选择.如果用户选择多个图像,我希望能够仅显示所选择的图像.如果他选择多个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);

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

我试图模仿名为“AllShare Play”(https://www.samsung.com/us/2012-allshare-play/)的云应用程序的功能.这个应用程序正是我需要在我的应用程序中执行的操作 – 允许用户“预览”多个文件并仅使用标准的“图库”应用程序用于图像,标准音乐应用程序用于歌曲等.在每种情况下,只选择文件使用每个Android设备加载的标准应用程序显示或播放,因此我知道可以不编写查看器或播放器.

任何人有任何想法如何通过Intent.ACTION_VIEW发送多个文件到外部应用程序?

解决方法

发送multible到ACTION_VIEW没有android标准.

但是有一个ACTION_SEND_MULTIPLE标准,文件通过EXTRA_STREAM传输.

对于一个有效的sendmultible示例,请参阅Secure-Photo-Viewer:您从图库应用程序中选择多个图像并将它们发送到Secure-Photo-Viewer.

如果您的应用程序是此意图的唯一发件人和接收者,您也可以使用与ACTION_VIEW相同的机制.

要了解有关意向通信的更多信息,您可以使用允许发送和接收多种意图的intent-intercept应用程序

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

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性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...