インストールされているAndroidアプリケーションのLinux UID(ユーザーID)を取得できるようにしたいと思います。
セキュリティと権限 からの抜粋:「インストール時にAndroidは、各パッケージに個別のLinuxユーザーIDを与えます。IDは、そのパッケージの存続期間中一定のままです。端末。"
このUIDを取得する方法はありますか?
PackageManager
およびgetApplicationInfo()
を使用します。
adb Shell dumpsys package com.example.myapp | grep userId=
packages.xml
にあるThe/data/system
ファイルpackages.list
にある/data/system
ファイルインストールされているアプリケーションとそれに対応するUIDのリストが含まれています。
PackageManager packageManager = getPackageManager();
try {
applicationId = String.valueOf(packageManager.getApplicationInfo("com.example.app", PackageManager.GET_META_DATA));
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
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);
Android.os.Process.myUid()
を使用して、呼び出しアプリのUIDを直接取得します。
独自のUIDを見つけるためにPackageManagerを使用する必要はありません。