Android:能获取系统已安装应用名,不能获取应用图标

yuchu 发布于 2013/03/22 16:24
阅读 1K+
收藏 0

源码在此,为啥不能获取应用图标,请前辈指点!

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

GridView gridview = (GridView) findViewById(R.id.gridView); // 获取GridView组件

List<Map<String, Object>> items = new ArrayList<Map<String, Object>>();// 创建一个list集合

PackageManager pm = getPackageManager();
List<PackageInfo> packs = pm.getInstalledPackages(PackageManager.GET_ACTIVITIES);
for(PackageInfo pi:packs){
HashMap<String,Object> map = new HashMap<String,Object>();
map.put("icon", pi.applicationInfo.loadIcon(pm));
map.put("name", pi.applicationInfo.loadLabel(pm));

items.add(map);
}

SimpleAdapter adapter = new SimpleAdapter(this,
items,
R.layout.items,
new String[] { "icon", "name" },
new int[] {R.id.icon, R.id.name }
); // 创建SimpleAdapter
gridview.setAdapter(adapter); // 将适配器与GridView关联

}
}
加载中
0
狄仁傑
狄仁傑
SimpleAdapter 我還真沒在項目中用過,不過據我剛才的研究發現似乎是 map.put("icon", pi.applicationInfo.loadIcon(pm));  這個icon 所對應的數據只接收int類型的,也就是R.drawable.ic_action_search 這些,所以你應該只能通過重寫adapter來實現你要的效果了
yuchu
yuchu
哦哦,试试
0
狄仁傑
狄仁傑
R.layout.items 這個沒問題么
yuchu
yuchu
items.xml贴上来了,评论里面
狄仁傑
狄仁傑
@yuchu 代碼也上了撒
yuchu
yuchu
没有问题啊
0
yuchu
yuchu
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <ImageView
        android:id="@+id/icon"
        android:paddingLeft="10dp"
        android:scaleType="fitCenter"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <TextView 
        android:id="@+id/name"
        android:padding="5dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"/>
    
</LinearLayout>
返回顶部
顶部