• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 **
3 ** Copyright 2006, The Android Open Source Project
4 **
5 ** Licensed under the Apache License, Version 2.0 (the "License");
6 ** you may not use this file except in compliance with the License.
7 ** You may obtain a copy of the License at
8 **
9 **     http://www.apache.org/licenses/LICENSE-2.0
10 **
11 ** Unless required by applicable law or agreed to in writing, software
12 ** distributed under the License is distributed on an "AS IS" BASIS,
13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 ** See the License for the specific language governing permissions and
15 ** limitations under the License.
16 */
17 
18 package com.android.development;
19 
20 import android.app.ListActivity;
21 import android.content.Context;
22 import android.content.Intent;
23 import android.content.pm.ApplicationInfo;
24 import android.content.pm.PackageInfo;
25 import android.content.pm.PackageManager;
26 import android.content.pm.PackageManager.NameNotFoundException;
27 import android.os.Bundle;
28 import android.view.View;
29 import android.view.ViewGroup;
30 import android.view.LayoutInflater;
31 import android.widget.BaseAdapter;
32 import android.widget.ListView;
33 import android.widget.TextView;
34 import java.text.Collator;
35 import java.util.ArrayList;
36 import java.util.Collections;
37 import java.util.Comparator;
38 import java.util.List;
39 
40 public class AppHwConfigList extends ListActivity {
41     private static final String TAG = "AppHwConfigList";
42     PackageManager mPm;
43 
44     @Override
onCreate(Bundle icicle)45     protected void onCreate(Bundle icicle) {
46         super.onCreate(icicle);
47 
48         mPm = getPackageManager();
49         mAdapter = new AppListAdapter(this);
50         if (mAdapter.getCount() <= 0) {
51             finish();
52         } else {
53             setListAdapter(mAdapter);
54         }
55     }
56 
57     @Override
onResume()58     protected void onResume() {
59         super.onResume();
60     }
61 
62     @Override
onStop()63     protected void onStop() {
64         super.onStop();
65     }
66 
67     @Override
onListItemClick(ListView l, View v, int position, long id)68     protected void onListItemClick(ListView l, View v, int position, long id) {
69         PackageInfo app = mAdapter.appForPosition(position);
70         // TODO display all preference settings
71         Intent intent = new Intent(Intent.ACTION_VIEW);
72         intent.setClass(this, AppHwPref.class);
73         intent.putExtra("packageName", app.packageName);
74         startActivity(intent);
75     }
76 
77     private final class AppListAdapter extends BaseAdapter {
AppListAdapter(Context context)78         public AppListAdapter(Context context) {
79             mContext = context;
80             mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
81 
82             List<ApplicationInfo> appList = mPm.getInstalledApplications(0);
83             for (ApplicationInfo app : appList) {
84                 PackageInfo pkgInfo = null;
85                 try {
86                     pkgInfo = mPm.getPackageInfo(app.packageName, 0);
87                 } catch (NameNotFoundException e) {
88                     // TODO Auto-generated catch block
89                     e.printStackTrace();
90                 }
91                 if ((pkgInfo != null)) {
92                         if(mList == null) {
93                              mList = new ArrayList<PackageInfo>();
94                          }
95                          mList.add(pkgInfo);
96                 }
97             }
98             if (mList != null) {
99                 Collections.sort(mList, sDisplayNameComparator);
100             }
101         }
102 
appForPosition(int position)103         public PackageInfo appForPosition(int position) {
104             if (mList == null) {
105                 return null;
106             }
107             return mList.get(position);
108         }
109 
getCount()110         public int getCount() {
111             return mList != null ? mList.size() : 0;
112         }
113 
getItem(int position)114         public Object getItem(int position) {
115             return position;
116         }
117 
getItemId(int position)118         public long getItemId(int position) {
119             return position;
120         }
121 
getView(int position, View convertView, ViewGroup parent)122         public View getView(int position, View convertView, ViewGroup parent) {
123             View view;
124             if (convertView == null) {
125                 view = mInflater.inflate(
126                         android.R.layout.simple_list_item_1, parent, false);
127             } else {
128                 view = convertView;
129             }
130             bindView(view, mList.get(position));
131             return view;
132         }
133 
bindView(View view, PackageInfo info)134         private final void bindView(View view, PackageInfo info) {
135             TextView text = (TextView)view.findViewById(android.R.id.text1);
136             text.setText(info != null ? info.applicationInfo.loadLabel(mPm) : "(none)");
137         }
138 
139         protected final Context mContext;
140         protected final LayoutInflater mInflater;
141         protected List<PackageInfo> mList;
142 
143     }
144 
145     private final Comparator sDisplayNameComparator = new Comparator() {
146         public final int compare(Object a, Object b) {
147             CharSequence  sa = ((PackageInfo) a).applicationInfo.loadLabel(mPm);
148             CharSequence  sb = ((PackageInfo) b).applicationInfo.loadLabel(mPm);
149             return collator.compare(sa, sb);
150         }
151         private final Collator   collator = Collator.getInstance();
152     };
153 
154     private AppListAdapter mAdapter;
155 }
156 
157