国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android檢查手機(jī)有沒有安裝某應(yīng)用的方法

2019-12-12 05:40:12
字體:
供稿:網(wǎng)友

本文實(shí)例講述了Android檢查手機(jī)有沒有安裝某應(yīng)用的方法。分享給大家供大家參考,具體如下:

手機(jī)用戶尤其厭煩手動(dòng)輸入大量信息,在一個(gè)程序中可以調(diào)用其他程序或功能往往可以給用戶更好的用戶體驗(yàn),讓用戶倍感親切,所以程序間這樣的整合可以 促成多方軟件協(xié)同工作的“共贏”局面。

那我們在我們自己的程序中調(diào)用其他程序時(shí)往往要檢查手機(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>();//用于存儲(chǔ)所有已安裝程序的包名     //從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)上查了下下面這個(gè)方法,據(jù)說可以,但我用時(shí)有點(diǎn)問題,可能是我傳入的參數(shù)有問題,下面這兩個(gè)函數(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>();//用于存儲(chǔ)所有已安裝程序的包名 //從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)上查了下下面這個(gè)方法,據(jù)說可以,但我用時(shí)有點(diǎn)問題,可能是我傳入的參數(shù)有問題,下面這兩個(gè)函數(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è)計(jì)有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 浑源县| 九江市| 凌云县| 古交市| 丹巴县| 双城市| 沙洋县| 罗江县| 韩城市| 阿克苏市| 马公市| 榆社县| 龙井市| 琼海市| 南通市| 桦甸市| 青冈县| 华容县| 界首市| 石台县| 泽州县| 武义县| 赣州市| 上林县| 政和县| 汶川县| 石阡县| 楚雄市| 梨树县| 泽库县| 当雄县| 县级市| 石渠县| 太和县| 兴海县| 哈巴河县| 杭州市| 焉耆| 云和县| 依兰县| 昭苏县|