如何解决通过添加到媒体商店,使外部文件可用于 Android 11 中的任何应用
我以这种方式创建了一个 sqlite db 文件:
public U_Bnt_DBSqlController openForLowerApi() throws SQLException {
database = SQLiteDatabase.openOrCreateDatabase(fileBnt(),null);
return this ;
}
文件路径:
public static File fileBnt() {
File dir = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
dir = new File (Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS)+ "/tilawaat"+"/"+"bnt.db" );
} else {
dir = new File(Environment.getExternalStorageDirectory() + "/tilawaat"+"/"+"bnt.db");
}
if (!dir.exists())
if(dir.mkdirs())
Log.i(TAG,"fileBnt: Creating success");
return dir;
}
就创建成功了。我可以阅读它。但是卸载应用程序后,我无法再次读取文件。
在 Android Documentation 中说:
接收应用程序需要访问 Uri 指向的数据的权限。推荐的方法是:
将数据存储在您自己的 ContentProvider 中,确保其他应用具有访问您的提供商的正确权限。提供访问权限的首选机制是使用 per-URI 权限,这是临时的并且只授予对接收应用程序的访问权限。创建这样的 ContentProvider 的一种简单方法是使用 FileProvider 帮助程序类。 使用系统 MediaStore。 MediaStore 主要用于视频、音频和图像 MIME 类型,但从 Android 3.0(API 级别 11)开始,它还可以存储非媒体类型(有关更多信息,请参阅 MediaStore.Files)。可以使用 scanFile() 将文件插入 MediaStore,然后将适合共享的 content:// 样式 Uri 传递给提供的 onScanCompleted() 回调。请注意,一旦将内容添加到系统 MediaStore,设备上的任何应用都可以访问该内容。
我的问题是如何使文件可被另一个 Any 应用程序发现(包括生成文件的应用程序本身)?关于上述文档的行Note that once added to the system MediaStore the content is accessible to any app on the device.
那么,我怎么可能added to the system MediaStore the content is accessible to any app on the device
?
如何将我的文件添加到 System MediaStore 以便我稍后阅读?
或者,更具体地说,在 Android 11 的 Documents 存储中创建一个文件,即使在应用本身卸载并重新安装后,该文件也可以读取任何其他应用和应用本身?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。