获取Android应用程序的Linux UID
我希望能够获得已安装Android应用程序的Linux UID(用户ID) 摘自:“在安装时,Android为每个软件包提供一个不同的Linux用户ID。在该设备上软件包的生命周期内,该标识保持不变。”获取Android应用程序的Linux UID,android,linux,uid,Android,Linux,Uid,我希望能够获得已安装Android应用程序的Linux UID(用户ID) 摘自:“在安装时,Android为每个软件包提供一个不同的Linux用户ID。在该设备上软件包的生命周期内,该标识保持不变。” 有办法检索此UID吗?使用PackageManager和getApplicationInfo() packages.xml文件存在于/data/system packages.list文件存在于/data/system 包含已安装的应用程序及其相应UID的列表。adb shell dumps
有办法检索此UID吗?使用
PackageManager
和getApplicationInfo()
-
文件存在于packages.xml
/data/system
文件存在于packages.list
/data/system
包含已安装的应用程序及其相应UID的列表。adb shell dumpsys package com.example.myapp | grep userId=正如Commonware已经编写的一样,您可以使用
PackageManager
获取UID
PackageManager packageManager = getPackageManager();
try {
applicationId = String.valueOf(packageManager.getApplicationInfo("com.example.app", PackageManager.GET_META_DATA));
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
下面是一个例子:
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);
使用
android.os.Process.myUid()
直接获取调用应用程序的UID
查找自己的UID不需要使用PackageManager。是的,我错过了ApplicationInfo类中的最后一个字段。谢谢:)您知道如何从android的linux内核获取应用程序的uid吗?@user489152如果应用程序当前有一个打开的进程,那么通过内核导出的/proc/pid结构执行的
ps
命令将显示该进程的uid。