プロセスとは、私たちが提供するものを意味しandroid:process
、パッケージとは、パッケージを意味します
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.osg.appkiller"
android:versionCode="1"
android:versionName="1.0" >
実行中のすべてのアプリのアプリケーション名を取得したかったのです。これは、さまざまな情報源を調べた後に私が行ったことです(そしてそれは機能します)。
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
PackageManager packageManager = getPackageManager();
final List<RunningAppProcessInfo> runningProcesses = activityManager.getRunningAppProcesses();
for(RunningAppProcessInfo processInfo : runningProcesses) {
CharSequence appName = null;
try {
appName = packageManager.getApplicationLabel(packageManager.getApplicationInfo(processInfo.processName, PackageManager.GET_META_DATA));
} catch (NameNotFoundException e) {
Log.e(TAG,"Application info not found for process : " + processInfo.processName,e);
}
}
PackageManager.getApplicationInfo のドキュメントが表示される場合
ApplicationInfo android.content.pm.PackageManager.getApplicationInfo(String packageName, int flags) throws NameNotFoundException
しかし、私は通ります
processInfo.processName
ここで、processName は実行中のプロセスの名前です。したがって、基本的にプロセス名をパッケージ名として使用してアプリケーション情報を取得しています。
- まず、このアプローチは正しいですか?
- 第二に、アクティビティ/サービスなどのプロセスを提供しない場合、新しいプロセスがパッケージ名と同じ名前で作成されるというのは本当ですか?