我希望能够获取已安装 Android 应用程序的 Linux UID(用户 ID)。
安全和权限摘录:“在安装时,Android 为每个包提供了一个不同的 Linux 用户 ID。在包在该设备上的整个生命周期内,身份保持不变。”
有没有办法检索这个 UID?
adb shell dumpsys package com.example.myapp | grep userId=
使用PackageManager
和getApplicationInfo()
。
/data/system
packages.list
文件存在于/data/system
包含已安装应用程序的列表及其对应的 UID。
PackageManager packageManager = getPackageManager();
try {
applicationId = String.valueOf(packageManager.getApplicationInfo("com.example.app", PackageManager.GET_META_DATA));
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
用于android.os.Process.myUid()
直接获取调用应用程序 UID。
无需使用 PackageManager 来查找自己的 UID。
正如 CommonsWare 已经写的那样,您可以使用它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);