編輯:關於Android編程
本文實例講述了Android檢查手機有沒有安裝某應用的方法。分享給大家供大家參考,具體如下:
手機用戶尤其厭煩手動輸入大量信息,在一個程序中可以調用其他程序或功能往往可以給用戶更好的用戶體驗,讓用戶倍感親切,所以程序間這樣的整合可以 促成多方軟件協同工作的“共贏”局面。
那我們在我們自己的程序中調用其他程序時往往要檢查手機有沒有安裝該軟件後再做相應操作,如沒有安裝,用intent將用戶引導至android market去下載該程序,如已安裝則打開該程序,並傳入參數和調用其功能。
下面介紹怎麼判斷手機已安裝某程序的方法:
private boolean isAvilible(Context context, String packageName){ final PackageManager packageManager = context.getPackageManager();//獲取packagemanager List< packageInfo> pinfo = packageManager.getInstalledPackages(0);//獲取所有已安裝程序的包信息 List<String> pName = new ArrayList<String>();//用於存儲所有已安裝程序的包名 //從pinfo中將包名字逐一取出,壓入pName list中 if(pinfo != null){ for(int i = 0; i < pinfo.size(); i++){ String pn = pinfo.get(i).packageName; pName.add(pn); } } return pName.contains(packageName);//判斷pName中是否有目標程序的包名,有TRUE,沒有FALSE }
下面是調用該方法進行判斷後的邏輯:
//已安裝,打開程序,需傳入參數包名:"com.skype.android.verizon" if(isAvilible(this, "com.skype.android.verizon")){ Intent i = new Intent(); ComponentName cn = new ComponentName("com.skype.android.verizon", "com.skype.android.verizon.SkypeActivity"); i.setComponent(cn); startActivityForResult(i, RESULT_OK); } //未安裝,跳轉至market下載該程序 else { Uri uri = Uri.parse("market://details?id=com.skype.android.verizon");//id為包名 Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it); }
上面方法是我自己寫的,另外網上查了下下面這個方法,據說可以,但我用時有點問題,可能是我傳入的參數有問題,下面這兩個函數要分別傳入action和intent,大家可以試試。
方法一:
public static boolean isIntentAvailable(Context context, String action) { final PackageManager packageManager = context.getPackageManager(); final Intent intent = new Intent(action); List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; }
方法二:
public boolean isIntentAvailable(Intent intent) { final PackageManager packageManager = this.getPackageManager(); List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; }
後再做相應操作,如沒有安裝,用intent將用戶引導至android market去下載該程序,如已安裝則打開該程序,並傳入參數和調用其功能。
下面介紹怎麼判斷手機已安裝某程序的方法:
private boolean isAvilible(Context context, String packageName){ final PackageManager packageManager = context.getPackageManager();//獲取packagemanager List< packageInfo> pinfo = packageManager.getInstalledPackages(0);//獲取所有已安裝程序的包信息 List<String> pName = new ArrayList<String>();//用於存儲所有已安裝程序的包名 //從pinfo中將包名字逐一取出,壓入pName list中 if(pinfo != null){ for(int i = 0; i < pinfo.size(); i++){ String pn = pinfo.get(i).packageName; pName.add(pn); } } return pName.contains(packageName);//判斷pName中是否有目標程序的包名,有TRUE,沒有FALSE }
下面是調用該方法進行判斷後的邏輯:
//已安裝,打開程序,需傳入參數包名:"com.skype.android.verizon" if(isAvilible(this, "com.skype.android.verizon")){ Intent i = new Intent(); ComponentName cn = new ComponentName("com.skype.android.verizon", "com.skype.android.verizon.SkypeActivity"); i.setComponent(cn); startActivityForResult(i, RESULT_OK); } //未安裝,跳轉至market下載該程序 else { Uri uri = Uri.parse("market://details?id=com.skype.android.verizon");//id為包名 Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it); }
上面方法是我自己寫的,另外網上查了下下面這個方法,據說可以,但我用時有點問題,可能是我傳入的參數有問題,下面這兩個函數要分別傳入action和intent,大家可以試試。
方法一:
public static boolean isIntentAvailable(Context context, String action) { final PackageManager packageManager = context.getPackageManager(); final Intent intent = new Intent(action); List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; }
方法二:
public boolean isIntentAvailable(Intent intent) { final PackageManager packageManager = this.getPackageManager(); List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; }
更多關於Android相關內容感興趣的讀者可查看本站專題:《Android視圖View技巧總結》、《Android編程之activity操作技巧總結》、《Android操作SQLite數據庫技巧總結》、《Android操作json格式數據技巧總結》、《Android數據庫操作技巧總結》、《Android文件操作技巧匯總》、《Android編程開發之SD卡操作方法匯總》、《Android開發入門與進階教程》、《Android資源操作技巧匯總》及《Android控件用法總結》
希望本文所述對大家Android程序設計有所幫助。
實現功能:退出應用時,保存歌曲位置(也就是當前是第幾首歌曲)退出應用時,保存播放模式(也就是用戶設置的是順序播放/隨機播放/單曲循環)進入應用時,讀取歌曲位置進入應用時,
首先我們在開發一個應用之前,特別是一個android應用,首先要考慮這個系統是運行在android版本為2.3的系統上,還是4.0的系統上或者說是支持所有a
飛信現在在生活之中運用越來越廣泛,他是中國移動推出的一款可以免費點對點短信的軟件,那麼如果我們把密碼忘記了怎麼辦呢?怎樣修改呢?下面小編來給大家介紹怎樣去找
android gridview畫分割線,如圖:1。先上圖:2.具體實現代碼:public class LineGridView extends GridView {