Ser*_*rde 9 sqlite android mime-types
我正在使用SQLite数据库编写应用程序.我已经编写了备份我的SQLite数据库的代码.我现在希望能够从这样的副本中恢复我的应用程序数据库.我正在使用Android设备"打开"对话框.如果我在列表中使用其他内容提供商,我会看到该文件,例如"蓝牙文件传输"!但是如果我尝试使用"下载"选项,我就不会看到它.
我在我的下载文件夹中复制了一个SQLite数据库.我试图使用fileIntent.setType(" / ").
谢谢.
ban*_*ing 15
是的application/x-sqlite3.我在自己的应用程序中使用它.
这是我如何使用它的一个例子:
File backupDB = ...;
//Uri uri = Uri.fromFile(backupDB); //From Android 7, this line results in a FileUriExposedException. Therefore, we must use MyFileProvider instead...
Uri uri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".com.example.myapp.myfileprovider", backupDB);
Intent newIntent = new Intent(Intent.ACTION_VIEW);
newIntent.setDataAndType(uri, "application/x-sqlite3");
newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
newIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(newIntent);
Run Code Online (Sandbox Code Playgroud)
为了完整性,这是我的MyFileProvider.java类:
package com.example.myapp;
import android.support.v4.content.FileProvider;
public class MyFileProvider extends FileProvider {
}
Run Code Online (Sandbox Code Playgroud)
以下是如何在清单中声明它:
<provider
android:name=".MyFileProvider"
android:authorities="${applicationId}.com.example.myapp.myfileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/my_file_provider_paths"/>
</provider>
Run Code Online (Sandbox Code Playgroud)
最后,这是我的my_file_provider_paths.xml:
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path name="external_files" path="."/>
</paths>
Run Code Online (Sandbox Code Playgroud)
自2018年2月以来,SQLite3格式已在IANA上注册了一种官方媒体类型:application/vnd.sqlite3。的使用application/x-sqlite3是不推荐使用的,如果需要向后兼容性只应使用。
看到:
我没有完整的答案。相反,我会提供一些想法。
我不确定“打开自”对话框是什么意思。我假设您指的是“选择器”对话框,它显示可以处理意图的应用程序的图标。
许多 Android 应用程序使用MimeTypeMap来关联文件扩展名和 MIME 类型。没有方法可以迭代 MimeTypeMap 来查看其所有映射是什么。我相当有信心这些就是映射。列表中没有 SQLite 的条目。SQLite 的传统 MIME 类型是“application/x-sqlite3”。
在您的帖子中,您包括了fileIntent.setType("/"). 我猜你实际上输入了fileIntent.setType("*/*"),并且因为它没有被引用,所以格式化程序吃了两颗星。
因为您可以为 SQLite 数据库文件提供任何您想要的扩展名,所以您可以灵活地选择一个能够产生您想要的结果的扩展名。我猜您想要找到一些东西,不仅可以使“下载”包含在选择器对话框中,而且还可以排除不需要的应用程序。在查看了MimeTypeMap.
| 归档时间: |
|
| 查看次数: |
6118 次 |
| 最近记录: |