如何解决Android 11中的sqlite数据库备份的mime类型是什么?
我在应用程序中具有导入和导出数据库文件的功能。我使用了mime类型的application/x-sqlite3
,它在较早的版本中运行良好。但是,在Android 11中,导出可以按预期工作,但是在选择导入时,复制的DB文件显示为灰色。因此,我无法选择文件进行进一步处理。如果我使用intent.setType("*/*");
,则可以访问该文件,但是我不想使每个文件都可选。我只想过滤出sqlite DB文件。
我也尝试过使用"application/vnd.sqlite3","application/octet-stream"
,但情况仍然存在。
这是代码段:
private void handleImportView() {
Intent intent = new Intent();
String[] mimetypes = {"application/x-sqlite3","application/vnd.sqlite3","application/octet-stream"};
intent.putExtra(Intent.EXTRA_MIME_TYPES,mimetypes);
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select file to import"),REQUEST_CODE_RESTORE);
}
解决方法
现在解决了。
我正在使用以下代码创建要导出的文件:
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("application/x-sqlite3");
intent.putExtra(Intent.EXTRA_TITLE,filename);
startActivityForResult(intent,REQUEST_CODE_FILE_CREATED);
尽管已将"application/x-sqlite3"
指定为mime类型,但实际上它是使用mime application/x-trash
创建的文件。
我在onActivityResult中使用了intent.setType("*/*");
和getContentResolver().getType(uri);
来识别哑剧类型。
现在,我已经添加了这种mime类型,它可以按预期工作。
private void handleImportView() {
Intent intent = new Intent();
String[] mimetypes = {"application/x-sqlite3","application/vnd.sqlite3","application/octet-stream","application/x-trash"};
intent.putExtra(Intent.EXTRA_MIME_TYPES,mimetypes);
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select file to import"),REQUEST_CODE_RESTORE);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。