Androidデバイスがインストールされているアプリケーションを取得


プロジェクトでは、システムがインストールされていることを表示するアプリケーションをよく使用します.インストールされているアプリケーションは、ApplicationInfo、ResolveInfoの2つの方法で取得できます.ここではResolveInfoを使って、コードをつけます.

PackageManager packageMgr = getActivity().getPackageManager();
    Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
    mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    List<ResolveInfo> resovleInfos = packageMgr.queryIntentActivities(
            mainIntent, 0);
    for (ResolveInfo resolve : resovleInfos) {
                    //      
        CarAllInstalledAppInfo app = new CarAllInstalledAppInfo();
                    // resolve.loadIcon(packageMgr)         
        app.setAppIcon(resolve.loadIcon(packageMgr));
                     // resolve.loadLabel(packageMgr)         
        app.setAppName(resolve.loadLabel(packageMgr).toString());
                     // resolve.loadLabel(packageMgr)         
        app.setAppPackage(resolve.activityInfo.packageName);
                     // resolve.loadLabel(packageMgr)             activity
        app.setEntranceActivity(resolve.activityInfo.name);
        apps.add(app);
    }

            //       
            ComponentName component = new ComponentName(
                    app.getAppPackage(), app.getEntranceActivity());
            Intent intent = new Intent(Intent.ACTION_MAIN);
                            //       ,        Contact.apk nullpointer  
            intent.addCategory(Intent.CATEGORY_LAUNCHER);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                    | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
            intent.setComponent(component);
            startActivity(intent);