我需要显示多个文件(每个图像,音乐或视频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);