如何让Android上运行的应用程序图标编程应用程序、图标、Android

2023-09-13 23:58:11 作者:捧壹罐野櫻

下面这是我的code,但我得到默认的Andr​​oid启动器图标的所有正在运行的应用程序:

  PackageManager PM = getPackageManager();

            ActivityManager AM1 =(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);

            名单< RunningTaskInfo>流程= am1.getRunningTasks(Integer.MAX_VALUE的);

                如果(进程!= NULL){
                    对于(INT K = 0; K< processes.size(); k ++){
                        //字符串PKGNAME = app.getPackageName();
                        字符串的packageName = processes.get(K).topActivity
                                .getPackageName();
                        可绘制ICO = NULL;
                        尝试
                        {
                         字符串PNAME =(字符串)pm.getApplicationLabel(PM
                                .getApplicationInfo(的packageName,
                                        PackageManager.GET_META_DATA));

                            ICO = pm.getApplicationIcon(PNAME);

                        }
                        赶上(的NameNotFoundException E)
                        {
                            Log.e(错误,无法找到图标包'
                                    +的packageName +':+ e.getMessage());
                        }
                        icons.put(processes.get(K).topActivity.getPackageName(),ICO);
                    }
 

解决方案

只是替换这行

  ICO = pm.getApplicationIcon(PNAME);
 

  ICO = getApplicationInfo()loadIcon(getPackageManager())。
 
Anbox 在 Linux 上运行 Android 应用程序的简单方式 Linux 中国

EDITED 满code:

 公共无效getAllICONS(){

    PackageManager下午= getPackageManager();

    ActivityManager AM1 =(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);

    名单< RunningTaskInfo>流程= AM1
            .getRunningTasks(Integer.MAX_VALUE的);

    如果(进程!= NULL){
        为(中间体K = 0; K&小于5; k ++){
            //字符串PKGNAME = app.getPackageName();
            字符串的packageName = processes.get(K).topActivity
                    .getPackageName();
            Log.e(的packageName  - >中,+的packageName);
            可绘制ICO = NULL;
            尝试 {
                字符串PNAME =(字符串)pm.getApplicationLabel(PM
                        .getApplicationInfo(的packageName,
                                PackageManager.GET_META_DATA));
                name.add(+ PNAME);
                ApplicationInfo A = pm.getApplicationInfo(的packageName,
                        PackageManager.GET_META_DATA);
                ICO = getPackageManager()。getApplicationIcon(
                        processes.get(k)的.topActivity.getPackageName());
                getPackageManager();
                Log.e(ICO  - >中,+ ICO);

            }赶上(的NameNotFoundException E){
                Log.e(错误,无法找到图标包'
                        +的packageName +':+ e.getMessage());
            }
            // icons.put(processes.get(K).topActivity.getPackageName(),ICO);
            icons.add(ICO);

        }
    }
}
 

以上code是显示你喜欢的图标:

Below here is my code but i am getting default android launcher icon for all running applications:

PackageManager pm = getPackageManager();

            ActivityManager am1 = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);

            List<RunningTaskInfo> processes = am1.getRunningTasks(Integer.MAX_VALUE);

                if (processes != null) {
                    for (int k = 0; k < processes.size(); k++) {
                        // String pkgName = app.getPackageName();
                        String packageName = processes.get(k).topActivity
                                .getPackageName();
                        Drawable ico = null;
                        try
                        {
                         String pName = (String) pm.getApplicationLabel(pm
                                .getApplicationInfo(packageName,
                                        PackageManager.GET_META_DATA));

                            ico = pm.getApplicationIcon(pName);

                        } 
                        catch (NameNotFoundException e) 
                        {
                            Log.e("ERROR", "Unable to find icon for package '"
                                    + packageName + "': " + e.getMessage());
                        }
                        icons.put(processes.get(k).topActivity.getPackageName(),ico);
                    }

解决方案

just replace this line

ico = pm.getApplicationIcon(pName);

to this

ico = getApplicationInfo().loadIcon(getPackageManager()); 

EDITED full code :

public void getAllICONS() {

    PackageManager pm = getPackageManager();

    ActivityManager am1 = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);

    List<RunningTaskInfo> processes = am1
            .getRunningTasks(Integer.MAX_VALUE);

    if (processes != null) {
        for (int k = 0; k < 5; k++) {
            // String pkgName = app.getPackageName();
            String packageName = processes.get(k).topActivity
                    .getPackageName();
            Log.e("packageName-->", "" + packageName);
            Drawable ico = null;
            try {
                String pName = (String) pm.getApplicationLabel(pm
                        .getApplicationInfo(packageName,
                                PackageManager.GET_META_DATA));
                name.add("" + pName);
                ApplicationInfo a = pm.getApplicationInfo(packageName,
                        PackageManager.GET_META_DATA);
                ico = getPackageManager().getApplicationIcon(
                        processes.get(k).topActivity.getPackageName());
                getPackageManager();
                Log.e("ico-->", "" + ico);

            } catch (NameNotFoundException e) {
                Log.e("ERROR", "Unable to find icon for package '"
                        + packageName + "': " + e.getMessage());
            }
            // icons.put(processes.get(k).topActivity.getPackageName(),ico);
            icons.add(ico);

        }
    }
}

above code is show you icons like: