我通过暴露一些APIAIDL http://developer.android.com/intl/ko/guide/components/aidl.html机制。客户端需要绑定AIDL并同步调用方法。有没有办法检索客户端的 Java 包名称?
例如,如果我公开一个方法boolean isFooAvailable()
作为 AIDL API,从 isFooAvalable 的实现中,我可以确定绑定到 AIDL 服务的应用程序的 Java 包名称吗?
扩展 CommonsWare 给出的评论,在您的内部Service
您可以使用
PackageManager packageManager = context.getPackageManager();
String callingName = packageManager.getNameForUid(Binder.getCallingUid());
如果您尝试限制呼叫者的访问,您还应该检查呼叫应用程序的证书。
PackageInfo callingPackageInfo = packageManager
.getPackageInfo(callingPackage, PackageManager.GET_SIGNATURES);
// Make sure to check there is only one signature, or you may run into a security
// vulnerability: https://androidvulnerabilities.org/vulnerabilities/Fake_ID
verify(callingPackageInfo.signatures);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)