Android自用-----系统自带app与用户app

  1 package com.oakpip.appexplorer;
  2 
  3 import java.util.ArrayList;
  4 import java.util.List;
  5 
  6 import android.app.Activity;
  7 import android.app.ProgressDialog;
  8 import android.content.pm.ApplicationInfo;
  9 import android.content.pm.PackageInfo;
 10 import android.content.pm.PackageManager;
 11 import android.os.Bundle;
 12 import android.os.Handler;
 13 import android.os.Message;
 14 import android.view.View;
 15 import android.view.Window;
 16 import android.view.WindowManager;
 17 import android.widget.GridView;
 18 import android.widget.ImageButton;
 19 import android.widget.Toast;
 20 
 21 import com.oakpip.appexplorer.adapter.GridViewAdapter;
 22 
 23 public class ShowAppActivity extends Activity {
 24     private GridView gv;
 25     private GridViewAdapter adapter;
 26     private List<PackageInfo> packageInfos;
 27     private List<PackageInfo> userPackageInfos;
 28     private ProgressDialog pd;
 29     private ImageButton ib_change_category;
 30     private boolean isAllApps = true;
 31 
 32     @Override
 33     public void onCreate(Bundle savedInstanceState) {
 34         super.onCreate(savedInstanceState);
 35         requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉title
 36         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
 37                 WindowManager.LayoutParams.FLAG_FULLSCREEN); // 全屏显示
 38         setContentView(R.layout.show_app_grid);
 39         setupViews();
 40     }
 41 
 42     private void setupViews() {
 43         gv = (GridView) findViewById(R.id.gv_apps);
 44         pd = ProgressDialog.show(this"请稍候...""正在加载程序..."truefalse);
 45         ib_change_category = (ImageButton) findViewById(R.id.ib_change_category);
 46         ib_change_category.setOnClickListener(new IBOnClickListener());
 47         // getAppsPackageInfos();
 48         // adapter = new GridViewAdapter(this.getApplicationContext(),
 49         // packageInfos);
 50         // gv.setAdapter(adapter);
 51         new LoadAppsThread().start();
 52     }
 53 
 54     private void getAppsPackageInfos() {
 55         packageInfos = getPackageManager().getInstalledPackages(
 56                 PackageManager.GET_UNINSTALLED_PACKAGES);
 57     }
 58 
 59     class LoadAppsThread extends Thread {
 60         @SuppressWarnings("static-access")
 61         @Override
 62         public void run() {
 63             getAppsPackageInfos();
 64             // 得到手机上安装的程序。
 65             userPackageInfos = new ArrayList<PackageInfo>();
 66             for (int i = 0; i < packageInfos.size(); i++) {
 67                 PackageInfo temp = packageInfos.get(i);
 68                 boolean isUserApp = false;
 69                 ApplicationInfo appInfo = temp.applicationInfo;
 70                 if ((appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
 71                     // 表示是系统程序,但用户更新过,也算是用户安装的程序
 72                     isUserApp = true;
 73                 } else if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
 74                     // 一定是用户安装的程序
 75                     isUserApp = true;
 76                 }
 77                 if (isUserApp) {
 78                     userPackageInfos.add(temp);
 79                 }
 80             }
 81             try {
 82                 Thread.currentThread().sleep(2000);
 83             } catch (InterruptedException e) {
 84                 e.printStackTrace();
 85             }
 86             mHandler.sendEmptyMessage(1);
 87         }
 88     }
 89 
 90     private Handler mHandler = new Handler() {
 91 
 92         @Override
 93         public void handleMessage(Message msg) {
 94             super.handleMessage(msg);
 95             if (msg.what == 1) {
 96                 adapter = new GridViewAdapter(ShowAppActivity.this
 97                         .getApplicationContext(), packageInfos);
 98                 gv.setAdapter(adapter);
 99                 pd.dismiss();
100                 setProgressBarIndeterminateVisibility(false);
101             } else if (msg.what == 2) {
102 
103             }
104         }
105     };
106 
107     class IBOnClickListener implements View.OnClickListener {
108 
109         @Override
110         public void onClick(View v) {
111             if (v == ib_change_category) {
112                 if (isAllApps) {
113                     ib_change_category.setImageResource(R.drawable.user);
114                     gv.setAdapter(new GridViewAdapter(ShowAppActivity.this
115                             .getApplicationContext(), userPackageInfos));
116                     isAllApps = false;
117                     Toast.makeText(ShowAppActivity.this"用户安装的程序列表",
118                             Toast.LENGTH_SHORT).show();
119                 } else {
120                     ib_change_category.setImageResource(R.drawable.all);
121                     gv.setAdapter(new GridViewAdapter(ShowAppActivity.this,
122                             packageInfos));
123                     isAllApps = true;
124                     Toast.makeText(ShowAppActivity.this"所有程序列表",
125                             Toast.LENGTH_SHORT).show();
126                 }
127             }
128         }
129     }
130 }
posted @ 2011-04-07 22:45  OAKPIP  阅读(5980)  评论(0编辑  收藏  举报