如何通过运行任务包名称来获取顶级活动



我想像这样从正在运行的任务包名称加载图标

com.android.smspush.WapPushManager

您可以通过以下代码获取运行最高的应用程序:获得应用程序信息后,您可以从信息中获取图标。

ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List l = am.getRecentTasks(1, ActivityManager.RECENT_WITH_EXCLUDED);
Iterator i = l.iterator();
PackageManager pm = this.getPackageManager();
while (i.hasNext()) {
    ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo)(i.next());
    try {
        CharSequence c = pm.getApplicationLabel(pm.getApplicationInfo(
        info.processName, PackageManager.GET_META_DATA));
        Drawable ico = info.loadIcon(pm);  //  Icon of the application
        Log.w("LABEL", c.toString());
    } catch (Exception e) {
        // Name Not FOund Exception
    }
}
public class AppIconDrawable {
    private HashMap<String, Drawable> drawables;
    private static AppIconDrawable sharedInstance = null;
    private AppIconDrawable(){
        drawables = new HashMap<>();
    }
    public static AppIconDrawable getSharedInstance(){
        if (sharedInstance == null)
            sharedInstance = new AppIconDrawable();
        return sharedInstance;
    }
    public void setDrawableForKey(String key, Drawable drawable){
        drawables.put(key, drawable);
    }
    public Drawable getDrawableForKey(String key){
        return drawables.get(key);
    }
}

为了保存图标,我使用了它,其中rp.process = com.android.smspush.WapPushManager

PackageManager manager = getActivity().getPackageManager();
List<ActivityManager.RunningAppProcessInfo> listProcesses = manager.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo info : listProcesses) {
    try {
        ApplicationInfo appinfo = manager.getApplicationInfo(info.processName, PackageManager.GET_META_DATA);
        AppIconDrawable.getSharedInstance().setDrawableForKey(info.processName, manager.getApplicationIcon(appinfo));
    } catch (PackageManager.NameNotFoundException e) {
        AppIconDrawable.getSharedInstance().setDrawableForKey(info.processName, context.getResources().getDrawable(R.drawable.ic_android_default));
    }
}

为了获得图标,我使用了它,其中rp.process = com.android.smspush.WapPushManager

holder.imgApp.setImageDrawable(AppIconDrawable.getSharedInstance().getDrawableForKey(rp.process));

最新更新