Android 在代码里、调试中通过uid获取包名
android调试时查询:
1. 当启动camera的时候,ActivityManager的log如下,uid显示10138,
02-26 14:02:32.115 1965 2066 I ActivityManager: START u0 {act=android.media.action.STILL_IMAGE_CAMERA flg=0x14000000 cmp=com.android.camera/.Camera} from uid 10138 on display 0
2. 那么10138到底是哪个应用呢,我们可以通过拉取packages.list文件进行查看
adb pull /data/system/packages.list .
3. 拉出packages.list文件后查看发现如下,
com.android.systemui 10138 0 /data/user_de/0/com.android.systemui
所以是systemUI启动的camera。
android代码里获取:
1. int callingUid = Binder.getCallingUid();
2. String packageName = snapshotComputer().getNameForUid(callingUid);
(注:uid是应用的调用id,android的沙盒机制产生的。一般每个应用的uid不一样、也有可能一样比如都是Process.SYSTEM_UID,uid和gid可以从data/user/0/中ls-l 看到)
本文来自博客园,作者:小汀,转载请注明原文链接:https://www.cnblogs.com/1118zjg/p/17223148.html