从本机客户端的应用程序的uid / pid获取包名称和签名

时间:2011-11-16 05:06:01

标签: android android-ndk android-framework

这是我在android平台上的第一个项目,我对这个环境感到不舒服。

我需要编写一个本机应用程序,它可以从应用程序的用户ID和运行应用程序实例的pid中派生应用程序包名称和签名。

我浏览了android应用程序框架,发现PackageManger能够获取包签名。 “..getPackageManager()。getPackageInfo(packageName,GET_SIGNATURES)..”

但是,这显示了在Java应用程序中从包名称获取签名的可能性。正如我所说,我们的输入参数只是应用程序的用户ID /运行实例进程ID。而且我还需要本机客户端而不是java应用程序。

我的问题可以分为以下几个部分。

  1. 有没有办法从本地程序中运行应用程序的uid和pid获取包名?如果无法使用本机客户端,也欢迎使用Java方法。

  2. 有没有办法从包名中获取签名?正如我所说,我已经找到了java解决方案。

  3. 本机客户端是否可以使用Binder服务?这种方法会帮助我解决问题吗?如果是这样,怎么样?

  4. 提前感谢!

1 个答案:

答案 0 :(得分:5)

A1:我认为可以扫描应用程序目录中的包名称,然后尝试匹配本机代码中的关联用户ID。在Java中,您只需使用getPackageForUid()

A2:没有看到任何原生的做法。实际上,在非根电话上无法访问任意.apk个文件。

A3:“可能不是”和“可能不是”而且:我不知道怎么做。绑定到远程服务不提供服务的身份验证信息;即使它确实如此:如何在不访问签名内容的情况下验证签名,即.apk

编辑:

提到的pm工具here可能有所帮助。