如何获取应用程序的原始徽标图标?

问题描述 投票:3回答:4

可以通过以下代码获取应用程序的图标:

Drawable drawable = ResolveInfo.loadIcon(packageManager);

但它可能是由R​​OM修改的可绘制(如:直角改为圆角),所以我的问题是如何通过程序获得原始徽标图标?

附:一些发射器可以做到这一点,就像MIUI发射器一样。

android package-managers graphical-logo
4个回答
3
投票

您可以使用PackageManager获取应用程序图标

PackageManager manager = context.getPackageManager();
Drawable appIcon = manager.getApplicationIcon(packagename);

0
投票

使用此代码

getPackageManager().getApplicationIcon(packagename);

0
投票
public static Drawable getApplicationIcon(Context context, String packname){
    PackageManager pm = context.getPackageManager();
    try {
        PackageInfo pInfo = pm.getPackageInfo(packname, 0);
        int resId = pInfo.applicationInfo.icon;
        AssetManager assetManager = AssetManager.class.newInstance();
        AssetManager.class.getMethod("addAssetPath", new Class[]{String.class}).invoke(assetManager, pInfo.applicationInfo.sourceDir);
        Resources oRes = context.getResources();
        Resources resources = new Resources(assetManager, oRes.getDisplayMetrics(), oRes.getConfiguration());
        Drawable result = resources.getDrawable(resId);
        assetManager.close();
        return result;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return pm.getDefaultActivityIcon();
}

0
投票

这么晚才回复很抱歉。但我希望这会帮助新手Android。

此方法将获取与Activity关联的图标。

public static Drawable getOriginalActivityIcon(Context context,ResolveInfo resolveInfo){
    PackageManager packageManager=context.getPackageManager();
    try {
        ActivityInfo info=resolveInfo.activityInfo;
        Drawable drawable = packageManager.getDrawable(info.packageName,info.getIconResource(), packageManager.getApplicationInfo(info.packageName, 0));
        if(drawable==null){
            drawable=resolveInfo.loadIcon(packageManager);
        }
        return drawable;
    }catch (Exception e){
        e.printStackTrace();
    }
    return packageManager.getDefaultActivityIcon();
}
© www.soinside.com 2019 - 2024. All rights reserved.