| /* |
| ** |
| ** Copyright 2006, The Android Open Source Project |
| ** |
| ** Licensed under the Apache License, Version 2.0 (the "License"); |
| ** you may not use this file except in compliance with the License. |
| ** You may obtain a copy of the License at |
| ** |
| ** http://www.apache.org/licenses/LICENSE-2.0 |
| ** |
| ** Unless required by applicable law or agreed to in writing, software |
| ** distributed under the License is distributed on an "AS IS" BASIS, |
| ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| ** See the License for the specific language governing permissions and |
| ** limitations under the License. |
| */ |
| |
| package com.android.development; |
| |
| import android.app.ListActivity; |
| import android.content.Context; |
| import android.content.Intent; |
| import android.content.pm.ApplicationInfo; |
| import android.content.pm.PackageInfo; |
| import android.content.pm.PackageManager; |
| import android.content.pm.PackageManager.NameNotFoundException; |
| import android.os.Bundle; |
| import android.view.View; |
| import android.view.ViewGroup; |
| import android.view.LayoutInflater; |
| import android.widget.BaseAdapter; |
| import android.widget.ListView; |
| import android.widget.TextView; |
| import java.text.Collator; |
| import java.util.ArrayList; |
| import java.util.Collections; |
| import java.util.Comparator; |
| import java.util.List; |
| |
| public class AppHwConfigList extends ListActivity { |
| private static final String TAG = "AppHwConfigList"; |
| PackageManager mPm; |
| |
| @Override |
| protected void onCreate(Bundle icicle) { |
| super.onCreate(icicle); |
| |
| mPm = getPackageManager(); |
| mAdapter = new AppListAdapter(this); |
| if (mAdapter.getCount() <= 0) { |
| finish(); |
| } else { |
| setListAdapter(mAdapter); |
| } |
| } |
| |
| @Override |
| protected void onResume() { |
| super.onResume(); |
| } |
| |
| @Override |
| protected void onStop() { |
| super.onStop(); |
| } |
| |
| @Override |
| protected void onListItemClick(ListView l, View v, int position, long id) { |
| PackageInfo app = mAdapter.appForPosition(position); |
| // TODO display all preference settings |
| Intent intent = new Intent(Intent.ACTION_VIEW); |
| intent.setClass(this, AppHwPref.class); |
| intent.putExtra("packageName", app.packageName); |
| startActivity(intent); |
| } |
| |
| private final class AppListAdapter extends BaseAdapter { |
| public AppListAdapter(Context context) { |
| mContext = context; |
| mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); |
| |
| List<ApplicationInfo> appList = mPm.getInstalledApplications(0); |
| for (ApplicationInfo app : appList) { |
| PackageInfo pkgInfo = null; |
| try { |
| pkgInfo = mPm.getPackageInfo(app.packageName, 0); |
| } catch (NameNotFoundException e) { |
| // TODO Auto-generated catch block |
| e.printStackTrace(); |
| } |
| if ((pkgInfo != null)) { |
| if(mList == null) { |
| mList = new ArrayList<PackageInfo>(); |
| } |
| mList.add(pkgInfo); |
| } |
| } |
| if (mList != null) { |
| Collections.sort(mList, sDisplayNameComparator); |
| } |
| } |
| |
| public PackageInfo appForPosition(int position) { |
| if (mList == null) { |
| return null; |
| } |
| return mList.get(position); |
| } |
| |
| public int getCount() { |
| return mList != null ? mList.size() : 0; |
| } |
| |
| public Object getItem(int position) { |
| return position; |
| } |
| |
| public long getItemId(int position) { |
| return position; |
| } |
| |
| public View getView(int position, View convertView, ViewGroup parent) { |
| View view; |
| if (convertView == null) { |
| view = mInflater.inflate( |
| android.R.layout.simple_list_item_1, parent, false); |
| } else { |
| view = convertView; |
| } |
| bindView(view, mList.get(position)); |
| return view; |
| } |
| |
| private final void bindView(View view, PackageInfo info) { |
| TextView text = (TextView)view.findViewById(android.R.id.text1); |
| text.setText(info != null ? info.applicationInfo.loadLabel(mPm) : "(none)"); |
| } |
| |
| protected final Context mContext; |
| protected final LayoutInflater mInflater; |
| protected List<PackageInfo> mList; |
| |
| } |
| |
| private final Comparator sDisplayNameComparator = new Comparator() { |
| public final int compare(Object a, Object b) { |
| CharSequence sa = ((PackageInfo) a).applicationInfo.loadLabel(mPm); |
| CharSequence sb = ((PackageInfo) b).applicationInfo.loadLabel(mPm); |
| return collator.compare(sa, sb); |
| } |
| private final Collator collator = Collator.getInstance(); |
| }; |
| |
| private AppListAdapter mAdapter; |
| } |
| |