问题描述
|
我希望能够获取已安装的Android应用程序的Linux UID(用户ID)。
摘自“安全性和权限”:\“在安装时,Android为每个程序包提供了一个独特的Linux用户ID。在程序包在该设备上的整个生命周期内,身份始终保持不变。”
有没有办法检索此UID?
解决方法
使用
PackageManager
和getApplicationInfo()
。
,adb shell dumpsys package com.example.myapp | grep userId=
,/data/system
中存在的packages.xml
文件
/data/system
中存在的packages.list
文件
包含已安装的应用程序及其对应的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);