2

appwidget があり、インストールされている他のアプリケーションのランチャー アイコンを表示したいと考えています。次の2つのコードのいずれかを使用してアイコンを取得できます

pkgInfo.applicationInfo.loadIcon(context.getPackageManager());

また

context.getPackageManager().getApplicationIcon(pkgInfo.packageName);

PackageInfopkgInfoのインスタンスはどこですか

アイコンが表示されず、ログにエラーが出力されないいくつかのアプリを除いて、すべて正常に動作します。ここでの回答によると、URI を使用してドローアブルを取得することもできます。

私の質問はandroid.resource://[package]/[res type]/[res name]、URI を取得する方法[res name]です。そして、この URI から他のアプリケーション アイコンのドローアブルを取得する方法は?

前もって感謝します。

4

2 に答える 2

2

リソース名がわからない場合は、ID でリソースにアクセスすることもできます。

android.resource://[package]/[res_id]

アプリ アイコンのリソース ID は、アプリの で利用できますApplicationInfo

ApplicationInfo appInfo = pm.getApplicationInfo(packageName, 0);
if(appInfo.icon != 0) {
    Uri uri = Uri.parse("android.resource://" + packageName + "/" + appInfo.icon);
}
于 2014-02-20T13:10:48.363 に答える
0

に変換中に問題が発生したようDrawableですBitmap。で使用できるRemoteViewsメソッドがないため、変換が必要でした。以下の変更を行うと、問題が修正されました。setImageDrawableImageView

Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();

Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap); 
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);
于 2012-06-26T06:30:22.160 に答える