在Android中,可以使用.mp4
Intent 打开本机文件选择器并选择例如video/mp4
文件。通过使用以下代码将mime类型设置为public static void pickFile(Context mContext, int REQUEST_CODE) {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("video/mp4");
((Activity) mContext).startActivityForResult(intent, REQUEST_CODE);
}
来实现此目的:
ACTION_OPEN_DOCUMENT
在我的项目中,我想选择一个自定义扩展文件,其mime类型在android的MimeTypeMap中是未知的,例如.qgs或.dcm文件。
为了解决这个问题,我发现到目前为止我们未能实现的两种可能性:
ACTION_OPEN_DOCUMENT
意图CREATE TABLE testInnoDb1 (
c1 int(11) PRIMARY KEY
) ENGINE=InnoDB;
CREATE TABLE testInnoDb2 (
c1 int(11) PRIMARY KEY,
FOREIGN KEY (c1) REFERENCES testInnoDb1(c1) ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB;
INSERT INTO testInnoDb1 (c1) VALUES (42);
INSERT INTO testInnoDb2 (c1) VALUES (42);
-- INSERT INTO testInnoDb2 (c1) VALUES (64); -- This will fail
-- UPDATE testInnoDb2 SET c1=128; -- This will fail
Intent一起使用这些选项是否可行以及如何? 或者我没有编写自己的文件选择器而错过了其他方法吗?
答案 0 :(得分:2)
您可以尝试创建自定义文件选择器并传递装入存储点,然后对所有文件类型进行递归迭代:
public void scanFiles(File file) {
File[] fileArray = file.listFiles();
for (File f : fileArray){
if (f.isDirectory())
scanFiles(f);
if (f.isFile() && (f.getpath().endswith("..qgs") || //any extensions)) {
//Add to your list
}
}
}
然后使用流程生成器和mount命令调用android中所有安装点的扫描文件,您可以添加对所有希望支持的安装点的检查。
答案 1 :(得分:2)
一个人可以使用ACTION_OPEN_DOCUMENT目的打开本机文件选择器
那不是“文件选择器”。并不需要设备上的每个DocumentsProvider
都提供恰好是文件的文档。
我想选择一个自定义扩展名文件,该文件的MIME类型在android的MimeTypeMap中是未知的,例如.qgs或.dcm文件
不要求设备上的每个DocumentsProvider
都使用带有其文件名的文档。您看到的名称是“显示名称”,对于某些提供程序,它们将是文件名,对于其他提供程序,它们可以是该提供程序想要的任何名称。
这两个选项中的一个是否可行
否。
还是在没有编写自己的文件选择器的情况下错过了其他方法?
如果只只需要文件,则有很多existing file picker implementations available in libraries。 ACTION_OPEN_DOCUMENT
适用于您要处理所有可能的文档源(可移动存储,云提供程序等),而不仅仅是文件。