Shi*_*pal 7 android file android-intent
我将选定的文件上传到服务器,但我知道我想restrick用户只选择文档文件(.doc,.pdf等)和图像文件.
现在我的代码适用于所有文件,它提取uri的所有文件,所以请告诉我如何限制用户只选择特定类型的文件.
这是我选择任何文件的代码.
Intent i=new Intent();
i.setType("*/*");
i.setAction(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(Intent.createChooser(i, "abc"),requestCode);
Run Code Online (Sandbox Code Playgroud)
Mad*_*bar 19
使用|
like 分隔多个MIME类型
i.setType("image/*|application/pdf|audio/*");
Run Code Online (Sandbox Code Playgroud)
或创建一个MIME类型数组,如
String[] mimetypes = {"image/*", "application/*|text/*"};
Run Code Online (Sandbox Code Playgroud)
并传递给它
i.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
Run Code Online (Sandbox Code Playgroud)
根据上面的答案和类似的线程,我开发了一个工作解决方案。我正在分享代码片段,因此它会很容易使用。
如何使用意图过滤或选择特定文件类型的文件。
代码
public static Intent getCustomFileChooserIntent(String ...types){
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
// Filter to only show results that can be "opened"
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_MIME_TYPES, types);
return intent;
}
Run Code Online (Sandbox Code Playgroud)
示例文件类型常量
public static final String DOC = "application/msword";
public static final String DOCX = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
public static final String IMAGE = "image/*";
public static final String AUDIO = "audio/*";
public static final String TEXT = "text/*";
public static final String PDF = "application/pdf";
public static final String XLS = "application/vnd.ms-excel";
Run Code Online (Sandbox Code Playgroud)
用法
// i passed string values, you can pass a array of string too.
Intent intent = getCustomFileChooserIntent(DOC, PDF, IMAGE);
startActivityForResult(intent, 101);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11951 次 |
| 最近记录: |