android开发,使用ListView获取各app的图标,图标不显示

银翼的魔术师xxp 2016-06-03 02:38:15
我想获得系统中所有的应用软件的名字和图标,名字可以显示,但图标不显示,在网上看了好多种解决方法,还是没有解决,看到之前有人问类似的问题,不知哪位大神能出手解救一下,代码不长~


package com.example.hello;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.example.hello.R;

import android.app.Activity;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView.OnItemClickListener;

public class now extends Activity implements OnItemClickListener{

private ListView list;
private SimpleAdapter sim_adapter;
private List<Map<String, Object>> data;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.now); //now中只有一个ListView
list = (ListView) findViewById(R.id.listView1);

data = new ArrayList<Map<String, Object>>();
data();
//item中包含TextView text1和ImageView pic1
sim_adapter = new SimpleAdapter(now.this, data, R.layout.item,
new String[] { "pic1", "text1" }, new int[] { R.id.pic1,
R.id.text1 });

list.setOnItemClickListener(now.this);
list.setAdapter(sim_adapter);
}

public List<Map<String, Object>> data() {
PackageManager pManager = now.this.getPackageManager();
// 获取手机内所有应用
List<PackageInfo> paklist = pManager.getInstalledPackages(0);
for (int i = 0; i < paklist.size(); i++) {

Map<String, Object> map = new HashMap<String, Object>();
PackageInfo pak = (PackageInfo) paklist.get(i);
// 判断是否为非系统预装的应用程序
if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) {
String text = pManager.getApplicationLabel(pak.applicationInfo)
.toString();
map.put("text1", text);
ApplicationInfo app = pak.applicationInfo;
app.sourceDir=pak.versionName;
app.publicSourceDir = pak.versionName;
Drawable d = pManager.getApplicationIcon(app);
map.put("pic1", d);
data.add(map);
//sim_adapter.notifyDataSetChanged();
}
// System.out.println(pManager.getApplicationLabel(pak.applicationInfo).toString());
}
return data;
}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
String s = list.getItemAtPosition(position) + " ";
Toast.makeText(now.this, s, Toast.LENGTH_SHORT).show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}

...全文
1708 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧