首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Android 10+直接访问文件(10+数据库)

使用Android 10+直接访问文件(10+数据库)
EN

Stack Overflow用户
提问于 2020-01-12 21:47:59
回答 1查看 884关注 0票数 1

我有两个应用程序A&B.A可以将数据下载到B所拥有的sqlite数据库中,直到现在我才向用户询问WRITE_EXTERNAL_STORAGE权限,而A可以直接写入B的数据库,从而使用事务来避免在用户取消该过程时更改数据库。

使用Android 10,直接文件访问似乎不再可能了,因为我们被迫使用这个*SAF.

为了实现这个目标,我更新了我的应用程序以使用ContentProvider。但是,我不再能够使用事务来提供cancel特性:数据太重,无法容纳内存,因此不能使用ContentProvider的批处理插入方法(如果我没有弄错的话)。

我被困住了吗?还是有一种解决方案可以在我拥有的两个应用程序之间授予直接文件访问权?理想的情况下,他的过程应该是这样的:

下载文件2

  • ...

  • A下载文件nH 214H 115>A提交事务处理(或在用户要求取消时回滚)H 216A通知B下载已完成H 218H 119B撤销访问H 220F 221/code>

这有可能吗?

编辑:为了使用SqliteDatabaseOpenHelper类,我需要对File对象进行访问,这样grantUriPermission就帮不了我了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-12 22:27:27

是否有办法在我拥有的两个应用程序之间授予直接文件访问权?

不是的。

我被困住了吗?

你可以这样做:

2

  • ...

  • A下载文件
  • A下载文件n
  • A告诉B“哟,我下载了这些文件”(见下文),如果用户不取消
  • B更新自己的数据库

F 217

“以某种方式”可以是:

  • insert()update()使用startService()
  • bindService()提供的ContentProvider
  • a命令,以及B的服务
  • 公开的对AIDL定义的API的调用--在B中使用显式Intent
  • starting a活动的广播Intent (如果这是合适的话)(可能不是,只是提到completeness)

A有一个“用户事务”,可以根据用户交互停止下载。下载完成后,B可以执行数据库事务,用下载内容的详细信息更新自己的数据库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59708378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档