3

aapt を使用して apk ファイルから情報を取得する Winform アプリケーションを開発しています。次のようなアプリケーション アイコンのパスを取得しました: *res/drawable-mdpi/app_icon.png* パスからアイコンを取得し、ImageList にプッシュします。どうすればできますか?ありがとうございます!

4

3 に答える 3

6

APK ファイルからアイコンを取得します。

File file = new File("/mnt/sdcard/thinkandroidsimple/pam.apk");
String sourcePath = file.getPath();

if (sourcePath.endsWith(".apk")) {
        PackageInfo packageInfo = context.getPackageManager()
                   .getPackageArchiveInfo(filePath, PackageManager.GET_ACTIVITIES);
        if(packageInfo != null) {
            ApplicationInfo appInfo = packageInfo.applicationInfo;
            if (Build.VERSION.SDK_INT >= 8) {
                appInfo.sourceDir = sourcePath;
                appInfo.publicSourceDir = sourcePath;
            }
            Drawable icon = appInfo.loadIcon(context.getPackageManager());
            Bitmap bmpIcon = ((BitmapDrawable) icon).getBitmap();
        }
    }

詳細を見る: Android で APK ファイルからアイコンを取得する方法

于 2014-03-31T07:50:04.163 に答える
0

次のコードを参照してください。

   public Drawable getFullResDefaultActivityIcon() {
            return getFullResIcon(Resources.getSystem(), android.R.mipmap.sym_def_app_icon);
        }

public Drawable getFullResIcon(Resources resources, int iconId) {
    Drawable d;
    try {
        ActivityManager activityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
        int iconDpi = activityManager.getLauncherLargeIconDensity();
        d = resources.getDrawableForDensity(iconId, iconDpi);
    } catch (Resources.NotFoundException e) {
        d = null;
    }

    return (d != null) ? d : getFullResDefaultActivityIcon();
}

public Drawable getFullResIcon(String packageName, int iconId) {
    Resources resources;
    try {
        resources = mContext.getPackageManager().getResourcesForApplication(packageName);
    } catch (PackageManager.NameNotFoundException e) {
        resources = null;
    }
    if (resources != null) {
        if (iconId != 0) {
            return getFullResIcon(resources, iconId);
        }
    }
    return getFullResDefaultActivityIcon();
}

public Drawable getFullResIcon(ResolveInfo info) {
    return getFullResIcon(info.activityInfo);
}

public Drawable getFullResIcon(ActivityInfo info) {
    Resources resources;
    try {
        resources = mContext.getPackageManager().getResourcesForApplication(info.applicationInfo);
    } catch (PackageManager.NameNotFoundException e) {
        resources = null;
    }
    if (resources != null) {
        int iconId = info.getIconResource();
        if (iconId != 0) {
            return getFullResIcon(resources, iconId);
        }
    }
    return getFullResDefaultActivityIcon();
}

private Drawable getAppIcon(ResolveInfo info) {
    return getFullResIcon(info.activityInfo);
}
于 2013-06-13T03:59:53.593 に答える
0

WinRar/WinZip または同等のものを使用して apk ファイルを開き (.zip ファイルの場合と同様)、そのパスからファイルを抽出します。

于 2013-06-13T03:53:00.793 に答える