获取Android应用程序的Linux UID

时间:2011-05-25 11:04:18

标签: android linux uid

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

摘自Security and Permissions:“在安装时,Android为每个软件包提供了一个独特的Linux用户ID。在该软件包的生命周期内,该标识保持不变。”

有没有办法检索这个UID?

6 个答案:

答案 0 :(得分:35)

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

答案 1 :(得分:22)

使用PackageManagergetApplicationInfo()

答案 2 :(得分:9)

  • packages.xml
  • 中的/data/system文件
  • packages.list
  • 中的/data/system文件

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

答案 3 :(得分:3)

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

答案 4 :(得分: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);

答案 5 :(得分:1)

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

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