获取 Android 应用程序的 Linux 用户 ID(UID)

36
我想要获取已安装Android应用程序的Linux UID(用户ID)。
来自Security and Permissions的摘录:"在安装时,Android会为每个包提供一个独特的Linux用户ID。该标识在该设备上持续的时间内保持不变。"
是否有一种方法来检索此UID?
7个回答

54

adb shell dumpsys package com.example.myapp | grep userId=


27

使用PackageManagergetApplicationInfo()方法。


是的,我在ApplicationInfo类中漏掉了最后一个字段。谢谢 :) - Erez A. Korn
你知道我们如何从Android的Linux内核中获取应用程序的UID吗? - user489152
如果应用程序当前有一个打开的进程,那么通过遍历内核导出的/proc/pid结构的“ps”命令将显示该进程的UID。 - Chris Stratton

12
  • /data/system目录下的packages.xml文件
  • /data/system目录下的packages.list文件

包含已安装应用程序及其相应UID的列表。


8

使用android.os.Process.myUid()可直接获取调用应用的UID。

不需要使用PackageManager来查找自己的UID。


4
PackageManager packageManager = getPackageManager();
try {
    applicationId = String.valueOf(packageManager.getApplicationInfo("com.example.app", PackageManager.GET_META_DATA));
} catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
}

3
如前面的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);

0
在命令行或者Shell脚本中,有一个简单的方法是
stat -c '%U' /data/user/0/id.of.app

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接