編輯:關於Android編程
本文實例講述了Android實現軟件列表的點擊啟動另外一個程序功能。分享給大家供大家參考,具體如下:
目前面世的許多軟件中有這麼一個功能:設備中安裝了哪些軟件,他們會以一個軟件列表清單的形式向用戶展示出來。
今天我們就來實現這一功能:
運行環境: motorola defy+ 系統2.3.6
主要 API : PackageInfo,PackageManager,LayoutInflater,ApplicationInfo
PackageManger類,它的主要職責是管理應用程序包。 通過它,我們就可以獲取應用程序信息
通過PackageManager獲取應用程序相關信息,再通過listView顯示出相應信息。
直接上主要代碼了
public class AppListView extends LinearLayout implements OnItemClickListener{
private final static String TAG = "AppListView";
private ListView mListView;
private TextView mTvTitle;
private List<AppInfo> mAppList;
private Context mContext;
private LayoutInflater mInflater;
private PackageManager mPacManager;
public AppListView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public AppListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
}
public AppListView(Context context)
{
super(context);
init(context);
}
private void init(Context c)
{
mContext = c;
mInflater = (LayoutInflater)c.getSystemService
(Context.LAYOUT_INFLATER_SERVICE);
this.addView(mInflater.inflate(R.layout.activity_main,null,false));
mListView = (ListView)this.findViewById(R.id.listView);
mTvTitle = (TextView)this.findViewById(R.id.title);
loadAppData();
mListView.setAdapter(new MyAdapter(c));
mListView.setOnItemClickListener(this);
Log.d(TAG, "一共"+mAppList.size());
}
// 加載應用軟件數據 軟件名稱,包名,對應的圖標等等
private void loadAppData()
{
if(mAppList != null){
mAppList.clear();
}else{
mAppList = new ArrayList<AppInfo>();
}
mPacManager = mContext.getPackageManager();
List<PackageInfo> packages = mPacManager.getInstalledPackages(0);
for(int i=0; i<packages.size(); i++){
PackageInfo pi = packages.get(i);
AppInfo ai = new AppInfo();
ai.packageName = pi.packageName;
ai.appName = pi.applicationInfo.loadLabel(mPacManager).toString();
ai.appIcon = pi.applicationInfo.loadIcon(mPacManager);
mAppList.add(ai);
}
mTvTitle.setText("本機所安裝的軟件總數:"+packages.size()+"個");
}
// 為ListView自定義適配器
class MyAdapter extends BaseAdapter
{
public MyAdapter(Context c)
{
mContext = c;
}
@Override
public int getCount() {
return mAppList == null?0:mAppList.size();
}
@Override
public Object getItem(int arg0) {
return mAppList == null?null:mAppList.get(arg0);
}
@Override
public long getItemId(int arg0) {
return arg0;
}
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
View view;
if(arg1 == null){
view = mInflater.inflate(R.layout.app_list_item, null);
}else{
view = arg1;
}
AppInfo ai = (AppInfo)getItem(arg0);
ImageView appIcon = (ImageView)view.findViewById(R.id.appIcon);
TextView appName = (TextView)view.findViewById(R.id.appName);
TextView appPackage = (TextView)view.findViewById(R.id.appPackage);
appIcon.setImageDrawable(ai.appIcon);
appName.setText(ai.appName);
appPackage.setText(ai.packageName);
return view;
}
}
// 處理ListView的item的點擊操作,我這裡是啟動該應用程序
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Toast.makeText(mContext, arg2+"", Toast.LENGTH_SHORT).show();
// 獲取本次item的包名
String packName = mAppList.get(arg2).packageName;
// 啟動此程序
Intent intent = mPacManager.getLaunchIntentForPackage(packName);
mContext.startActivity(intent);
}
// 軟件載體
public class AppInfo {
// 軟件名稱
public String appName="";
// 軟件包名
public String packageName="";
// 軟件圖標
public Drawable appIcon=null;
}
}
public abstract Intent getLaunchIntentForPackage (String packageName)
這個方法通過包名返回一個Intent , 然後通過StartActivity(Intent)啟動應用程序
完整實例代碼點擊此處本站下載。
下面是程序運行的效果圖:

更多關於Android相關內容感興趣的讀者可查看本站專題:《Android控件用法總結》、《Android視圖View技巧總結》、《Android文件操作技巧匯總》、《Android操作SQLite數據庫技巧總結》、《Android操作json格式數據技巧總結》、《Android數據庫操作技巧總結》、《Android編程之activity操作技巧總結》、《Android編程開發之SD卡操作方法匯總》、《Android開發入門與進階教程》及《Android資源操作技巧匯總》
希望本文所述對大家Android程序設計有所幫助。
Android實現微信分享及注意事項
一、獲取幫助文檔並下載相關資料首先打開微信開放平台:https://open.weixin.qq.com/ 如果沒有注冊,請先注冊並上傳開發者資料等待審核。資源中心---
Android 學習之獲取網絡文本文件
上次我們學習如何從網絡上獲取一張圖片,今天我們學習如何從網絡上獲取文本文件,以XML文件為例子。因為XML文件在實際開發中最為常見。我們以下面圖片為例子學習如何從網絡上獲
Jenkins構建Android項目持續集成之創建項目
新建項目前面,已經介紹了,系統相關配置,接下來就可以開始創建項目了。選擇新建—>構建一個自由風格的軟件項目,然後填寫項目名稱。項目如下:注意:項目配置源
Android 之 三級緩存(內存!!!、本地、網絡)及內存LruCache擴展 及源碼分析--- 學習和代碼講解
一. 三級緩存簡介如上圖所示,目前App中UI界面經常會涉及到圖片,特別是像“今日關注”新聞這類app中,圖片運用的幾率十分頻繁。當手機上需要顯示