繁体   English   中英

Android:从另一个具有相同签名的应用程序访问内部存储

[英]Android: access internal storage from another app with same signature

上下文:我有两个应用程序,都使用相同的签名进行签名。 第一个应用程序的数据存储在内部存储中,我想迁移到第二个应用程序。

问题:如何从第二个应用程序访问第一个应用程序中的数据? The Android documentation makes reference to "signature permissions" ( https://developer.android.com/guide/topics/permissions/overview#signature and https://developer.android.com/training/articles/security-tips#StoringData ) 并暗示可以在具有相同签名的应用程序之间共享数据,但我找不到有关如何执行此操作的明确指南。

似乎可以通过创建内容提供者来实现? 或者是否可以直接访问这些文件,因为我从文档中了解到它们将使用相同的用户/相同的进程运行?

理想情况下,这个过程可以在用户干预最少的情况下发生,并且都可以从第二个应用程序发生(例如,第二个应用程序可以识别第一个应用程序已安装,提示用户迁移,然后从第一个应用程序读取数据并将其移至第二个)。 如果可以移动文件(而不是复制)会更好,因为我们可能有很多数据,而用户可能没有足够的磁盘空间来复制数据。

似乎可以通过创建内容提供者来实现?

是的。 您可以创建签名级权限并使用它来保护对 Android 中任何标准 IPC 选项的访问,包括ContentProviderService

或者是否可以直接访问这些文件,因为我从文档中了解到它们将使用相同的用户/相同的进程运行?

不,由相同签名密钥签名的两个应用程序不会以同一用户身份运行,更不用说在同一进程中运行了。 android:sharedUserId让应用程序以同一用户身份运行。 这从来都不是一个好主意,已被弃用,并且很可能很快就会被 go 淘汰。

如果可以移动文件(而不是复制)会更好,因为我们可能有很多数据,而用户可能没有足够的磁盘空间来复制数据。

这表明从用户的角度来看,拥有两个应用程序是一个错误,而不是一个功能。 您可以执行的最接近“移动”操作的是“复制后删除”,因此计划您的副本尽可能细化,以便您可以像 go 一样删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM