好的,我用这个
开始我的功能 Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType(mimeType);
intent.addCategory(Intent.CATEGORY_OPENABLE);
for Samsung
chooserIntent = Intent.createChooser(sIntent, context.getString(R.string.choosefilefrom));
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] {intent});
用于其他设备
chooserIntent = Intent.createChooser(intent, context.getString(R.string.choosefilefrom));
mimeType是允许使用的类型,此时此*/*
。
但如何排除图像和视频只显示文件选择器中的文件?
我有3个意图,一个用于图像,一个用于视频,一个用于文件。
答案 0 :(得分:1)
您目前正在指定 / ,这是"所有"。
据我所知,mime类型中没有排除机制。
你必须指定你想要允许的特定mime类型 - 除了这两种mime类型之外,没有办法指定"除了#34;。
答案 1 :(得分:0)
如果您看看https://www.iana.org/assignments/media-types/media-types.xhtml
那么您可能可以假定主要的mime类型:
application/ogg
之类的音频)因此,假设您希望选择Audio
或Video
或Images
之外的其他任何东西
然后执行以下操作:
String[] mimetypes = {
"application/*",
//"audio/*",
"font/*",
//"image/*",
"message/*",
"model/*",
"multipart/*",
"text/*",
//"video/*"
};
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes); //Important part here
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(intent, 10000);
然后当然要处理返回的URI:
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 10000)
{
if (data != null)
{
if (data.getClipData() != null)
{
// multiple files selected
for (int i = 0; i < data.getClipData().getItemCount(); i++)
{
android.net.Uri uri = data.getClipData().getItemAt(i).getUri();
}
}
else
{
// single file selected
android.net.Uri uri = data.getData();
}
}
}
}