有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java AndroidPermission:向后兼容性。仅允许访问使用旧版本“我的应用”的应用(强制执行新版本权限)

如何授予对正在使用我的更新应用程序(较新版本)的应用程序的访问权限,这些应用程序将强制执行权限

假设我的应用程序名为ABC,版本为0.1

设备上很少有应用程序使用ABC应用程序提供的服务(比如XZ)

现在,我的公司认为我们应该公开使用XZ服务的许可

根据这一点,我们已在版本0.2中强制执行许可PQ。现在,对于使用我们的服务XZ的应用程序,他们应该在清单文件中提到PQ权限

但问题是,升级后,使用0.1版的应用程序将无法再使用我们的服务

我知道使用XZ服务的所有应用程序是什么

我们如何解决向后兼容性问题

我在网上查得够多了,但运气不好

如果你面对同样的问题并找到了解决办法,请帮助我

欢迎任何变通解决方案


共 (1) 个答案

  1. # 1 楼答案

    How we can solve the backward compatibility issue ?

    联系这些应用程序的开发人员,警告他们即将到来的权限要求,并鼓励他们提前更新应用程序

    或者,不要通过权限保护你的应用程序。如果存在一组已知的有限的客户端应用程序,并且您正在使用兼容的通信机制(例如,基于AIDL的绑定),那么您可以使用getCallingUid()找出请求的客户端,并根据已知应用程序的白名单对其进行验证。您甚至可以检查公共签名密钥是否与预期值匹配,以帮助抵御客户端的黑客版本

    另一种可能性是对同一功能有两个单独的服务入口点:

    • 未经许可,0.1版与今天一样工作

    • 0.2版本不仅需要<uses-permission>元素,还需要更改服务的标识(例如,用于查找服务的Intent的不同操作字符串)

    这允许您在不破坏旧应用程序的情况下开始加强安全性。然后,您可以提供一个弃用窗口,让0.1客户端在最终完全删除0.1入口点(或者至少用相同的权限保护它)之前有时间移动到0.2

    最有可能的是,还有其他的模式——这些都是我脑子里想不出来的模式