Android實現(xiàn)軟件列表的點擊啟動另外一個程序功能【附demo源碼下載】
本文實例講述了Android實現(xiàn)軟件列表的點擊啟動另外一個程序功能。分享給大家供大家參考,具體如下:
目前面世的許多軟件中有這么一個功能:設備中安裝了哪些軟件,他們會以一個軟件列表清單的形式向用戶展示出來。
今天我們就來實現(xiàn)這一功能:
運行環(huán)境: motorola defy+ 系統(tǒng)2.3.6
主要 API : PackageInfo,PackageManager,LayoutInflater,ApplicationInfo
PackageManger類,它的主要職責是管理應用程序包。 通過它,我們就可以獲取應用程序信息
通過PackageManager獲取應用程序相關(guān)信息,再通過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()); } // 加載應用軟件數(shù)據(jù) 軟件名稱,包名,對應的圖標等等 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("本機所安裝的軟件總數(shù):"+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)啟動應用程序
完整實例代碼點擊此處本站下載。
下面是程序運行的效果圖:
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android控件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android文件操作技巧匯總》、《Android操作SQLite數(shù)據(jù)庫技巧總結(jié)》、《Android操作json格式數(shù)據(jù)技巧總結(jié)》、《Android數(shù)據(jù)庫操作技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android編程開發(fā)之SD卡操作方法匯總》、《Android開發(fā)入門與進階教程》及《Android資源操作技巧匯總》
希望本文所述對大家Android程序設計有所幫助。
相關(guān)文章
Flutter 控制屏幕旋轉(zhuǎn)的實現(xiàn)
這篇文章主要介紹了Flutter 控制屏幕旋轉(zhuǎn)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09Fultter NestedScrollView實現(xiàn)吸頂效果以及遇到問題解析
這篇文章主要為大家介紹了Fultter NestedScrollView實現(xiàn)吸頂效果以及遇到問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09android IntentService實現(xiàn)原理及內(nèi)部代碼分享
android IntentService實現(xiàn)原理及內(nèi)部代碼分享,需要的朋友可以參考一下2013-06-06Android GridView實現(xiàn)橫向列表水平滾動
這篇文章主要為大家詳細介紹了Android GridView實現(xiàn)橫向列表水平滾動,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07Android實現(xiàn)ImageView圖片縮放和拖動
這篇文章主要為大家詳細介紹了Android實現(xiàn)ImageView圖片縮放和拖動的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11簡單掌握Android開發(fā)中彩信的發(fā)送接收及其附件的處理
這篇文章主要介紹了簡單掌握Android開發(fā)中彩信的發(fā)送接收及其附件的處理,由于微信的流行,使用彩信的用戶已經(jīng)很少了,簡單了解即可,需要的朋友可以參考下2016-02-02開源自研內(nèi)存分析利器Android?Bitmap?Monitor圖片定位詳解
這篇文章主要為大家介紹了Android?Bitmap?Monitor開源自研內(nèi)存分析利器,助你定位不合理的圖片使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03