最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2016年08月15日 10:48:57   作者:llyofdream  
這篇文章主要介紹了Android檢查手機(jī)有沒(méi)有安裝某應(yīng)用的方法,分析總結(jié)了幾種常用的判斷技巧,涉及Android針對(duì)應(yīng)用程序包的相關(guān)讀取與判定技巧,需要的朋友可以參考下

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

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

那我們?cè)谖覀冏约旱某绦蛑姓{(diào)用其他程序時(shí)往往要檢查手機(jī)有沒(méi)有安裝該軟件后再做相應(yīng)操作,如沒(méi)有安裝,用intent將用戶引導(dǎo)至android market去下載該程序,如已安裝則打開(kāi)該程序,并傳入?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,沒(méi)有FALSE
}

下面是調(diào)用該方法進(jìn)行判斷后的邏輯:

//已安裝,打開(kāi)程序,需傳入?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);
}

上面方法是我自己寫(xiě)的,另外網(wǎng)上查了下下面這個(gè)方法,據(jù)說(shuō)可以,但我用時(shí)有點(diǎn)問(wèn)題,可能是我傳入的參數(shù)有問(wèn)題,下面這兩個(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)操作,如沒(méi)有安裝,用intent將用戶引導(dǎo)至android market去下載該程序,如已安裝則打開(kāi)該程序,并傳入?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,沒(méi)有FALSE
}

下面是調(diào)用該方法進(jìn)行判斷后的邏輯:

//已安裝,打開(kāi)程序,需傳入?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);
}

上面方法是我自己寫(xiě)的,另外網(wǎng)上查了下下面這個(gè)方法,據(jù)說(shuō)可以,但我用時(shí)有點(diǎn)問(wèn)題,可能是我傳入的參數(shù)有問(wèn)題,下面這兩個(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)容感興趣的讀者可查看本站專(zhuān)題:《Android視圖View技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android操作SQLite數(shù)據(jù)庫(kù)技巧總結(jié)》、《Android操作json格式數(shù)據(jù)技巧總結(jié)》、《Android數(shù)據(jù)庫(kù)操作技巧總結(jié)》、《Android文件操作技巧匯總》、《Android編程開(kāi)發(fā)之SD卡操作方法匯總》、《Android開(kāi)發(fā)入門(mén)與進(jìn)階教程》、《Android資源操作技巧匯總》及《Android控件用法總結(jié)

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 詳解Android PopupWindow怎么合理控制彈出位置(showAtLocation)

    詳解Android PopupWindow怎么合理控制彈出位置(showAtLocation)

    本篇文章主要介紹了詳解Android PopupWindow怎么合理控制彈出位置(showAtLocation),具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-10-10
  • Android 實(shí)現(xiàn)會(huì)旋轉(zhuǎn)的餅狀統(tǒng)計(jì)圖實(shí)例代碼

    Android 實(shí)現(xiàn)會(huì)旋轉(zhuǎn)的餅狀統(tǒng)計(jì)圖實(shí)例代碼

    這篇文章主要介紹了Android 實(shí)現(xiàn)會(huì)旋轉(zhuǎn)的餅狀統(tǒng)計(jì)圖實(shí)例代碼的相關(guān)資料,這里附有實(shí)例代碼及實(shí)現(xiàn)效果圖,需要的朋友可以參考下
    2016-12-12
  • Android開(kāi)發(fā) Activity和Fragment詳解

    Android開(kāi)發(fā) Activity和Fragment詳解

    本文主要介紹Android開(kāi)發(fā) Activity和Fragment,這里對(duì)Activity和Fragment的知識(shí)做了詳細(xì)講解,并附簡(jiǎn)單代碼示例,有興趣的小伙伴可以參考下
    2016-08-08
  • Android中Market的Loading效果實(shí)現(xiàn)方法

    Android中Market的Loading效果實(shí)現(xiàn)方法

    這篇文章主要介紹了Android中Market的Loading效果實(shí)現(xiàn)方法,較為詳細(xì)的分析了Android中l(wèi)oading效果的相關(guān)布局及功能實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • Android仿視頻加載旋轉(zhuǎn)小球動(dòng)畫(huà)效果的實(shí)例代碼

    Android仿視頻加載旋轉(zhuǎn)小球動(dòng)畫(huà)效果的實(shí)例代碼

    這篇文章主要介紹了Android仿視頻加載旋轉(zhuǎn)小球動(dòng)畫(huà)效果的實(shí)例代碼,文中給大家提到了PathMeasure的用法,介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • 基于Flutter實(shí)現(xiàn)掃描二維碼功能

    基于Flutter實(shí)現(xiàn)掃描二維碼功能

    在今天的移動(dòng)開(kāi)發(fā)中,二維碼掃描已經(jīng)成為了常見(jiàn)的功能之一,Flutter作為一款跨平臺(tái)的開(kāi)發(fā)框架,提供了豐富的插件和功能,下面我們就來(lái)看看如何使用Flutter實(shí)現(xiàn)掃描二維碼功能吧
    2024-11-11
  • Android中Image的簡(jiǎn)單實(shí)例詳解

    Android中Image的簡(jiǎn)單實(shí)例詳解

    這篇文章主要為大家詳細(xì)介紹了Android中Image的簡(jiǎn)單實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android指紋識(shí)別API初試

    Android指紋識(shí)別API初試

    這篇文章主要為大家詳細(xì)介紹了Android指紋識(shí)別API,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Android搜索框通用版

    Android搜索框通用版

    這篇文章主要為大家詳細(xì)介紹了Android搜索框通用版的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • flutter 自定義websocket路由的實(shí)現(xiàn)

    flutter 自定義websocket路由的實(shí)現(xiàn)

    這篇文章主要介紹了flutter 自定義websocket路由的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12

最新評(píng)論

施秉县| 日照市| 肇东市| 北京市| 崇仁县| 岑巩县| 正蓝旗| 仁化县| 蒲江县| 子长县| 青海省| 宝应县| 阳江市| 武冈市| 汨罗市| 芦溪县| 太仓市| 四平市| 大宁县| 本溪市| 清徐县| 洪洞县| 乡宁县| 临猗县| 满洲里市| 东宁县| 房山区| 临夏县| 江华| 克拉玛依市| 灌阳县| 宿松县| 阿合奇县| 张掖市| 禄丰县| 阳泉市| 绿春县| 句容市| 宣威市| 方城县| 靖远县|