我想要获取已安装Android应用程序的Linux UID(用户ID)。
来自Security and Permissions的摘录:"在安装时,Android会为每个包提供一个独特的Linux用户ID。该标识在该设备上持续的时间内保持不变。"
是否有一种方法来检索此UID?
来自Security and Permissions的摘录:"在安装时,Android会为每个包提供一个独特的Linux用户ID。该标识在该设备上持续的时间内保持不变。"
是否有一种方法来检索此UID?
adb shell dumpsys package com.example.myapp | grep userId=
使用PackageManager
和getApplicationInfo()
方法。
/data/system
目录下的packages.xml
文件/data/system
目录下的packages.list
文件包含已安装应用程序及其相应UID的列表。
使用android.os.Process.myUid()
可直接获取调用应用的UID。
不需要使用PackageManager来查找自己的UID。
PackageManager packageManager = getPackageManager();
try {
applicationId = String.valueOf(packageManager.getApplicationInfo("com.example.app", PackageManager.GET_META_DATA));
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
PackageManager
来获取UID。int uid;
try {
ApplicationInfo info = context.getPackageManager().getApplicationInfo(
context.getPackageName(), 0);
uid = info.uid;
} catch (PackageManager.NameNotFoundException e) {
uid = -1;
}
Log.i(LOG_TAG, "UID = " + uid);
stat -c '%U' /data/user/0/id.of.app