1. 程式人生 > >安卓隨手筆記四:(判斷第三方app是否安裝並啟動)

安卓隨手筆記四:(判斷第三方app是否安裝並啟動)

話說今晚西班牙隊與荷蘭隊,很是期待啊!

為什麼會判斷第三方app是否安裝呢?比如,我們在某個應用中獲取到使用者當前位置的經度緯度,然後呢,想要在百度地圖中把這個位置給顯示出來,那麼我們就要先判斷是否安裝百度地圖,然後才是啟動第三方app

目前生活中,比較常用的是百度地圖和高德地圖

判斷是否安裝了某個app,我們是通過包名檢測系統中是否安裝了某個應用程式
/**
 * 判斷手機是否安裝百度或者高德地圖 只要安裝一個即可
 */
private boolean ifInstallMap() {

          return   isPackageInstalled(this, "com.autonavi.minimap") 

                       || isPackageInstalled(this, "com.baidu.BaiduMap");

}


private boolean isPackageInstalled(Context c, String pn) {
    PackageManager packageManager = c.getPackageManager();
   try {
           PackageInfo pi = packageManager.getPackageInfo(pn,PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
           if (null != pi) {
                return true;
            }
       } catch (NameNotFoundException e) {
          e.printStackTrace();
         return false;
   }
      return false;
}

上面的com.autonavi.minimap是高德地圖的包名,com.baidu.BaiduMap是百度地圖的包名。

然後是啟動第三方app

Intent intent = new Intent(Intent.ACTION_VIEW);
if (TextUtils.isEmpty(經度)|| TextUtils.isEmpty(維度)) {// 如果獲取到的為空
       Toast.makeText(this, "獲取位置失敗", Toast.LENGTH_SHORT).show();
    } else {
      String locationSplitString = "geo:" + 經度+ "," + 維度;
if (ifInstallMap()) {// 高德地圖或者百度地圖至少安裝之一
         Uri uri = Uri.parse(locationSplitString);
         intent.setData(uri);
         startActivity(intent);
     } else {
           Toast.makeText(this, "請先安裝地圖", Toast.LENGTH_SHORT).show();
       }
}

這樣就在百度地圖或者高德地圖中顯示出了傳入的經度和維度所在的位置