インストールされているすべてのアプリの名前とアイコンを表示したいと思います。これを行うには、次のコードで情報を取得しています:
List<PackageInfo> apps = getPackageManager().getInstalledPackages(0);
ArrayList<AppInfo> res = new ArrayList<>();
for(int i=0;i<apps.size();i++) {
PackageInfo p = apps.get(i);
if((p.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0){
AppInfo newInfo = new AppInfo();
newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();
newInfo.pname = p.packageName;
newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());
res.add(newInfo);
}
}
ListViewアイコンとアプリ名を表示するカスタムは既にありますが、アイコンにはIDorが必要URIです。
newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());
それは私に次のようなものを与えます:
android.graphics.drawable.BitmapDrawable@[numbers+letters]" (e.g. android.graphics.drawable.BitmapDrawable@803da37)
そして、私はこれを使用する方法がわかりません。
URI またはIDこのデータから取得する方法はありますか?
BitmapDrawable誰かがこの@...ここに質問を投稿しましたが、答えはありません。
EDIT:
実際には、私は でデータをストックしているHashMap<String, String>ので、次のようなものがあります:
map.put("name",p.applicationInfo.loadLabel(getPackageManager()).toString());
map.put("img", p.applicationInfo.loadIcon(getPackageManager()).toString());
次に、次を使用しSimpleAdapterます。
myListView = (ListView) findViewById(R.id.customListView);
SimpleAdapter myAdapter = new SimpleAdapter(this.getBaseContext(),listApp,R.layout.myLayout,
new String[]{"img","name"},new int[]{R.id.img,R.id.name});
myListView.setAdapter(myAdapter);
使用するのは良い考えではないことはわかっていますHashMap<String, String>が、別の方法で行う方法がわかりません。