32

我希望能够获取已安装 Android 应用程序的 Linux UID(用户 ID)。

安全和权限摘录:“在安装时,Android 为每个包提供了一个不同的 Linux 用户 ID。在包在该设备上的整个生命周期内,身份保持不变。”

有没有办法检索这个 UID?

4

6 回答 6

47

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

于 2013-09-21T01:07:50.487 回答
25

使用PackageManagergetApplicationInfo()

于 2011-05-25T12:43:13.983 回答
11
  • ‍<code>packages.xml 文件存在于/data/system
  • packages.list文件存在于/data/system

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

于 2012-03-26T22:48:06.317 回答
4
PackageManager packageManager = getPackageManager();
try {
    applicationId = String.valueOf(packageManager.getApplicationInfo("com.example.app", PackageManager.GET_META_DATA));
} catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
}
于 2017-12-26T07:27:42.170 回答
2

用于android.os.Process.myUid()直接获取调用应用程序 UID。

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

于 2020-03-10T13:07:39.003 回答
1

正如 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);
于 2019-03-21T15:17:27.200 回答