这是我在android平台上的第一个项目,我对这个环境感到不舒服。
我需要编写一个本机应用程序,它可以从应用程序的用户ID和运行应用程序实例的pid中派生应用程序包名称和签名。
我浏览了android应用程序框架,发现PackageManger能够获取包签名。 “..getPackageManager()。getPackageInfo(packageName,GET_SIGNATURES)..”
但是,这显示了在Java应用程序中从包名称获取签名的可能性。正如我所说,我们的输入参数只是应用程序的用户ID /运行实例进程ID。而且我还需要本机客户端而不是java应用程序。
我的问题可以分为以下几个部分。
有没有办法从本地程序中运行应用程序的uid和pid获取包名?如果无法使用本机客户端,也欢迎使用Java方法。
有没有办法从包名中获取签名?正如我所说,我已经找到了java解决方案。
本机客户端是否可以使用Binder服务?这种方法会帮助我解决问题吗?如果是这样,怎么样?
提前感谢!
答案 0 :(得分:5)
A1:我认为可以扫描应用程序目录中的包名称,然后尝试匹配本机代码中的关联用户ID。在Java中,您只需使用getPackageForUid()。
A2:没有看到任何原生的做法。实际上,在非根电话上无法访问任意.apk
个文件。
A3:“可能不是”和“可能不是”而且:我不知道怎么做。绑定到远程服务不提供服务的身份验证信息;即使它确实如此:如何在不访问签名内容的情况下验证签名,即.apk
。
编辑:
提到的pm
工具here可能有所帮助。