6

这是我在android平台上的第一个项目,我还不太适应这个环境。

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

我浏览了android 应用程序框架,发现PackageManger 具有获取包签名的能力。“..getPackageManager().getPackageInfo(packageName, GET_SIGNATURES)..”</p>

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

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

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

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

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

提前致谢!

4

1 回答 1

5

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

A2:还没有看到任何本地人可以做到这一点。事实上,在非 root 手机上访问任意.apk文件应该是不可能的。

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

编辑:

如此处所述,pm工具可能会有所帮助。

于 2011-11-17T18:04:11.467 回答