Android檢查手機(jī)有沒有安裝某應(yīng)用的方法
本文實(shí)例講述了Android檢查手機(jī)有沒有安裝某應(yīng)用的方法。分享給大家供大家參考,具體如下:
手機(jī)用戶尤其厭煩手動輸入大量信息,在一個程序中可以調(diào)用其他程序或功能往往可以給用戶更好的用戶體驗(yàn),讓用戶倍感親切,所以程序間這樣的整合可以 促成多方軟件協(xié)同工作的“共贏”局面。
那我們在我們自己的程序中調(diào)用其他程序時往往要檢查手機(jī)有沒有安裝該軟件后再做相應(yīng)操作,如沒有安裝,用intent將用戶引導(dǎo)至android market去下載該程序,如已安裝則打開該程序,并傳入?yún)?shù)和調(diào)用其功能。
下面介紹怎么判斷手機(jī)已安裝某程序的方法:
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中是否有目標(biāo)程序的包名,有TRUE,沒有FALSE }
下面是調(diào)用該方法進(jìn)行判斷后的邏輯:
//已安裝,打開程序,需傳入?yún)?shù)包名:"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); } //未安裝,跳轉(zhuǎn)至market下載該程序 else { Uri uri = Uri.parse("market://details?id=com.skype.android.verizon");//id為包名 Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it); }
上面方法是我自己寫的,另外網(wǎng)上查了下下面這個方法,據(jù)說可以,但我用時有點(diǎn)問題,可能是我傳入的參數(shù)有問題,下面這兩個函數(shù)要分別傳入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; }
后再做相應(yīng)操作,如沒有安裝,用intent將用戶引導(dǎo)至android market去下載該程序,如已安裝則打開該程序,并傳入?yún)?shù)和調(diào)用其功能。
下面介紹怎么判斷手機(jī)已安裝某程序的方法:
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中是否有目標(biāo)程序的包名,有TRUE,沒有FALSE }
下面是調(diào)用該方法進(jìn)行判斷后的邏輯:
//已安裝,打開程序,需傳入?yún)?shù)包名:"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); } //未安裝,跳轉(zhuǎn)至market下載該程序 else { Uri uri = Uri.parse("market://details?id=com.skype.android.verizon");//id為包名 Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it); }
上面方法是我自己寫的,另外網(wǎng)上查了下下面這個方法,據(jù)說可以,但我用時有點(diǎn)問題,可能是我傳入的參數(shù)有問題,下面這兩個函數(shù)要分別傳入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; }
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android視圖View技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android操作SQLite數(shù)據(jù)庫技巧總結(jié)》、《Android操作json格式數(shù)據(jù)技巧總結(jié)》、《Android數(shù)據(jù)庫操作技巧總結(jié)》、《Android文件操作技巧匯總》、《Android編程開發(fā)之SD卡操作方法匯總》、《Android開發(fā)入門與進(jìn)階教程》、《Android資源操作技巧匯總》及《Android控件用法總結(jié)》
希望本文所述對大家Android程序設(shè)計有所幫助。
- Android實(shí)現(xiàn)檢查并下載APK更新、安裝APK及獲取網(wǎng)絡(luò)信息的方法
- Android檢查手機(jī)網(wǎng)絡(luò)狀態(tài)及網(wǎng)絡(luò)類型的方法
- Android中檢查、設(shè)置默認(rèn)程序詳解
- Android中檢查、監(jiān)聽電量和充電狀態(tài)的方法
- android 檢查網(wǎng)絡(luò)連接狀態(tài)實(shí)現(xiàn)步驟
- Android簡單判斷某個APK是否已經(jīng)安裝的方法
- Android編程判斷應(yīng)用程序是否已安裝的方法
- Android編程判斷手機(jī)上是否安裝了某個程序的方法
- Android和IOS的瀏覽器中檢測是否安裝某個客戶端的方法
相關(guān)文章
Android中findViewById返回為空null的快速解決辦法
這篇文章主要介紹了Android中findViewById返回為空null的快速解決辦法的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-06-06Android短信接收監(jiān)聽、自動回復(fù)短信操作例子
本文實(shí)現(xiàn)了短信接收監(jiān)聽,當(dāng)接收到短信時,可自動回復(fù)短信,或自動回?fù)茈娫?,同時監(jiān)聽短信的發(fā)送狀態(tài)2014-04-04使用科大訊飛語音SDK實(shí)現(xiàn)文字在線合成語音
這篇文章主要介紹了使用科大訊飛語音SDK實(shí)現(xiàn)文字在線合成語音 的相關(guān)資料,需要的朋友可以參考下2015-12-12Kotlin開發(fā)中open關(guān)鍵字與類名函數(shù)名和變量名的使用方法淺析
這篇文檔中,我們將解釋如何以及為什么將 open 關(guān)鍵字與類名、函數(shù)名和變量名一起使用,了解內(nèi)部原理是為了幫助我們做擴(kuò)展,同時也是驗(yàn)證了一個人的學(xué)習(xí)能力,如果你想讓自己的職業(yè)道路更上一層樓,這些底層的東西你是必須要會的2023-02-02EditText實(shí)現(xiàn)輸入限制和校驗(yàn)功能實(shí)例代碼
本文通過實(shí)例代碼給大家介紹EditText實(shí)現(xiàn)輸入限制和校驗(yàn)功能,感興趣的朋友參考下吧2017-08-08