我希望能够获得已安装的Android应用程序的Linux UID(用户ID)。
来自Security and Permissions的摘录:“在安装时,Android为每个软件包提供了一个独特的Linux用户ID。在该软件包的生命周期内,该标识保持不变。”
有没有办法检索这个UID?
使用PackageManager
和getApplicationInfo()
。
adb shell dumpsys package com.example.myapp | grep userId=
packages.xml
文件存在于/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();
}
正如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);