Obtain the Linux UID of an Android App
質問
I would like to be able to get the Linux UID (user ID) of an installed Android application.
Excerpt from Security and Permissions: "At install time, Android gives each package a distinct Linux user ID. The identity remains constant for the duration of the package's life on that device."
Is there a way to retrieve this UID?
解決
Use PackageManager
and getApplicationInfo()
.
他のヒント
adb shell dumpsys package com.example.myapp | grep userId=
- The
packages.xml
file present in/data/system
- The
packages.list
file present in/data/system
Contain the list of applications installed and their corresponding UID's.
PackageManager packageManager = getPackageManager();
try {
applicationId = String.valueOf(packageManager.getApplicationInfo("com.example.app", PackageManager.GET_META_DATA));
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
As CommonsWare already wrote, you can use PackageManager
to get the UID.
Here's an example:
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);
Use android.os.Process.myUid()
to get the calling apps UID directly.
Using the PackageManager is not necessary to find the own UID.
所属していません StackOverflow