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 " 请稍候... " " 正在加载程序... " true false );
 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  }

你可能感兴趣的:(android)