Android 获取进程名称(可以区分内部进程)

   由于项目需要,很多时候使用新进程来运行服务等类似的需要,一般常用android:process=":newProcess"的方法。但是在android每新启动一个进程都需要重新加载Application的onCreate方法。我们就需要在onCreate里区分进程的名称来进行有选择性的加载一些资源。但是使用普通的context.getApplicationInfo.processName的方法都只能得到包名,无法区分同个包的进程。这里介绍一种其他可用的方法。

    public String getProcessName(Context context) {
        String process = null;
        if (context != null) {
            int pid = android.os.Process.myPid();
            ActivityManager am = (ActivityManager) context
                    .getSystemService(Context.ACTIVITY_SERVICE);
            List<ActivityManager.RunningAppProcessInfo> infoList = null;
            try {
                infoList = am.getRunningAppProcesses();
                for (ActivityManager.RunningAppProcessInfo apps : infoList) {
                    if (apps.pid == pid) {
                        process = apps.processName;
                    }
                }
            } catch (SecurityException e) {
                // 进程可能不具备获取 getRunningAppProcesses 权限
                e.printStackTrace();
            }
        }
        return process ;

猜你喜欢

转载自liguanyi11111.iteye.com/blog/2195567