11

プロセスとは、私たちが提供するものを意味しandroid:process、パッケージとは、パッケージを意味します

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.osg.appkiller"
    android:versionCode="1"
    android:versionName="1.0" >

詳細プロセスとスレッド - Android デベロッパー

実行中のすべてのアプリのアプリケーション名を取得したかったのです。これは、さまざまな情報源を調べた後に私が行ったことです(そしてそれは機能します)。

    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 は実行中のプロセスの名前です。したがって、基本的にプロセス名をパッケージ名として使用してアプリケーション情報を取得しています。

  1. まず、このアプローチは正しいですか?
  2. 第二に、アクティビティ/サービスなどのプロセスを提供しない場合、新しいプロセスがパッケージ名と同じ名前で作成されるというのは本当ですか?
4

1 に答える 1