通过程序获得
通过PackageManager,得到相应包名的ApplicationInfo,ApplicationInfo 中有个值域就是uid:
try {
PackageManager pm = getPackageManager();
ApplicationInfo ai = pm.getApplicationInfo("com.speedsoftware.rootexplorer", 0);
Toast.makeText(MainActivity.this, Integer.toString(ai.uid,10), Toast.LENGTH_SHORT).show();
} catch (NameNotFoundException e) {
}
通过ps命令获得
在adb shell敲入ps,得到运行的进程的列表,如下一个小截屏:
u0_a开头的都是Android的应用进程,Android的应用的UID是从10000开始,到19999结束,可以在Process.java中查看到(FIRST_APPLICATION_UID和LAST_APPLICATION_UID),u0_a后面的数字就是该应用的UID值减去FIRST_APPLICATION_UID所得的值,所以,对于com.android.systemui,它的user是u0_a12,按前面的规制,它的UID就是12 + FIRST_APPLICATION_UID = 10012。
查看进程的proc情况
cat /proc//status,里面有个uid,这个就是应用的uid
查看packages.xml的信息
应用程序的一些安装信息在这里面,通过它找到uid的标志,houm