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 }
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 }