gpt4 book ai didi

android - Intent.ACTION_VIEW - 多个文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:04:30 37 4
gpt4 key购买 nike

我有显示多个文件的要求(图像、音乐或视频各有 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/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com