如何在一个单独的进程中将私有文件传递给android Service

时间:2015-08-15 02:23:20

标签: android security service

我在Android上有点像菜鸟但是我有一个应用程序,其中应用程序的一部分生成大数据文件,我想安排到作为单独进程运行的服务(出于健壮性原因)上传到远程服务器。如果设备重新启动,此过程将处理复杂的内容,如重试和恢复上传等。上传完成后,它将删除该文件。

文件可能很大。

但我发现即使在同一个应用程序包中,分离的流程服务和应用程序的其他模块中的上下文也指向相同的私有文件"路径当我尝试打开由分离的流程服务中的应用程序UI模块写入的文件时,即使两个模块都属于同一个应用程序包,我也会收到权限被拒绝错误。

这样做的最佳方法是什么,不涉及通过IPC传递所有数据,而只是在编写后在单独的进程上传服务中打开和读取文件。

我已经看了一下内容提供商系统,它看起来像是需要的但是在同一个应用程序包的模块中传递文件似乎有点过分,而复制它们是浪费CPU和电池寿命。

有没有办法让两个进程都能访问共享文件夹,但是在包中指定的模块组中保持文件夹是私有的?或者ContentProvider系统是唯一正确的方法吗?它是否避免复制数据?

1 个答案:

答案 0 :(得分:0)

嗯 - 进一步进入android,似乎“isolatedProcess”服务没有权限访问IPC之外的任何或更低级别的进程间通信原语。

但是 - 如果你为服务指定了一个单独的“android:process”名称,但DO-NOT没有将其指定为“isolatedProcess”,那么 在具有给定名称的“单独”进程中运行使用它自己的堆等,它也可以访问私有存储。

这就是我所做的,并且所有工作都按照需要进行。