• 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 }
  • 相关阅读:
    前端之CSS盒模型介绍
    前端之CSS列表及背景类属性
    前端之CSS字体和文本类属性
    流程控制语句
    前端之CSS语法及选择器
    前端之CSS创建的样式
    前端之HTML语法及常用标签
    前端之HTML样式
    网页制作之前端简介
    jQuery(一)、核心
  • 原文地址:https://www.cnblogs.com/oakpip/p/2008777.html
Copyright © 2020-2023  润新知