这是activityManagerService中提供的api
public String getPackagesForUid(int uid) {
return mContext.getPackageManager().getPackagesForUid(uid)[0];
}
最完善的方式
getPackagesForUid返回的是一个list,这就涉及到了安装过程中uid的分配。
安装过程中多个包名可能复用同一个udi(这里就不详细解释了,感兴趣的可以去网上查找相关资料)
public boolean checkePackage(String PackageName){
for(String pkg : mContext.getPackageManager().getPackagesForUid(callingUid)){
Slog.v(TAG_PROVIDER, "filename is:"+ pkg);
if(PackageName.equals(pkg)){
if (DEBUG_PROVIDER) Slog.v(TAG_PROVIDER, "filename is : "+ PackageName);
return null;
}
}
}
uid查看方法
ps命令:
ps -A|grep xxx
图来自:https://www.jianshu.com/p/b33dd49f2ae6。
这个 u0_a106
就表示该应用是 user 0(主用户)下面的应用,id是 106,前面说过 普通应用程序的UID 都是从 10000开始的,所以 最终计算出的 UID 就是 10106。