36、获取应用程序图标和相应的软件名,用GridView方式展现

——————————main.java————————–

package com.example.rfe;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import android.app.ProgressDialog;import android.content.pm.ApplicationInfo;import android.content.pm.PackageManager;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.ActionBarActivity;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.GridView;import android.widget.ImageView;import android.widget.TextView;/*** 获取已经安装的软件名及其软件的包名,该包名可以被用来开启另一个应用程序** @author Administrator**/public class MainActivity extends ActionBarActivity implements Runnable {List<Map<String, Object>> list = null;private ProgressDialog pd;private PackageManager packageManager;GridView list_home;@Overridepublic void onCreate(Bundle icicle) {super.onCreate(icicle);setContentView(R.layout.activity_main);setTitle("软件信息");list_home = (GridView) findViewById(R.id.list_home);pd = ProgressDialog.show(this, "请稍候..", "正在收集你已经安装的软件信息…", true,false);Thread thread = new Thread(this);thread.start();}private void refreshListItems() {list = fetch_installed_apps();MyAdapter myAdapter = new MyAdapter();list_home.setAdapter(myAdapter);// 设置actionBar的标题!!setTitle("软件信息,已经安装" + list.size() + "款应用.");}public List fetch_installed_apps() {List<ApplicationInfo> packages = getPackageManager().getInstalledApplications(0);list = new ArrayList<Map<String, Object>>(packages.size());Iterator<ApplicationInfo> l = packages.iterator();packageManager = getPackageManager();while (l.hasNext()) {Map<String, Object> map = new HashMap<String, Object>();ApplicationInfo app = (ApplicationInfo) l.next();Drawable drawable = app.loadIcon(packageManager);String label = "";try {label = getPackageManager().getApplicationLabel(app).toString();} catch (Exception e) {Log.i("Exception", e.toString());}map = new HashMap<String, Object>();map.put("name", label);map.put("ico", drawable);list.add(map);}return list;}@Overridepublic void run() {fetch_installed_apps();handler.sendEmptyMessage(0);}private Handler handler = new Handler() {public void handleMessage(Message msg) {refreshListItems();pd.dismiss();}};private class MyAdapter extends BaseAdapter{@Overridepublic int getCount() {return list.size();}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {View view = View.inflate(MainActivity.this, R.layout.list_item, null);ImageView iv_item = (ImageView) view.findViewById(R.id.iv_item);TextView tv_item = (TextView) view.findViewById(R.id.tv_item);tv_item.setText((CharSequence) list.get(position).get("name"));Drawable drawable = (Drawable) list.get(position).get("ico");iv_item.setImageDrawable(drawable);return view;}@Overridepublic Object getItem(int position) {return null;}@Overridepublic long getItemId(int position) {return 0;}}}

。。。。。。。。。。。。main.xml。。。。。。。。。。。

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=""android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"><GridView android:id="@+id/list_home" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="15dip" android:numColumns="3" android:verticalSpacing="10dip" /></LinearLayout>

。。。。。。。。。。。。。list_item.xml。。。。。。。。。。。。。。。

穿越茫茫人海,寻找属于我们的那一份宁静。

36、获取应用程序图标和相应的软件名,用GridView方式展现

相关文章:

你感兴趣的文章:

标签云: