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 GridViewgv;
25 private GridViewAdapteradapter;
26 private List < PackageInfo > packageInfos;
27 private List < PackageInfo > userPackageInfos;
28 private ProgressDialogpd;
29 private ImageButtonib_change_category;
30 private boolean isAllApps = true ;
31
32 @Override
33 public void onCreate(BundlesavedInstanceState){
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=newGridViewAdapter(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 PackageInfotemp = packageInfos.get(i);
68 boolean isUserApp = false ;
69 ApplicationInfoappInfo = 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 (InterruptedExceptione){
84 e.printStackTrace();
85 }
86 mHandler.sendEmptyMessage( 1 );
87 }
88 }
89
90 private HandlermHandler = new Handler(){
91
92 @Override
93 public void handleMessage(Messagemsg){
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(Viewv){
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 }

更多相关文章

  1. 小程序之switch...case...break
  2. Android 7.0 如何将应用添加设置列表
  3. android 用Intent打开系统程序
  4. android启动时应用程序渐变效果
  5. Android中写与Wifi相关程序的注意事项——读LocationManagerServ
  6. Android程序开发调试工具(一):dx和dexdump
  7. Android系统应用程序安装过程源码分析
  8. android 开发 调用第三方程序
  9. ANDROID上获取MSN邮件列表

随机推荐

  1. Android(安卓)服务
  2. 浅谈Android(安卓)Studio单元测试步骤
  3. Android Framework 基础
  4. Android开发UI之自定义控件的皮肤
  5. Android中的共享设置(SharedPreferences)
  6. Android:res之shape制作圆角、虚线、渐变
  7. Android 建造者(Builder)模式
  8. MTK Android Driver:PMIC
  9. Android 远程监控摄像头 移动端+PC端 旧
  10. Android : Android Studio 3.4更新至grad