Android 調起第三方地圖應用進行導航

最近公司項目中用到類似的功能等龙,記錄一下甸箱,權當筆記吧闽坡,能幫到其他人也算是功德一件了栽惶。

1.準備工作。由于我們需要判斷手機上是否安裝了特定的地圖應用疾嗅,所以第三方地圖的包名也就是必須的了外厂。
  • 百度地圖包名:com.baidu.BaiduMap

  • 高德地圖包名:com.autonavi.minimap

  • 騰訊地圖包名:com.tencent.map

2.根據包名判斷是否安裝了當前應用
  • 方法一:
public static boolean isPackageInstalled(String packageName) {
        return new File("/data/data/" + packageName).exists();
    }
  • 方法二:
public static boolean isPackageInstalled(Context mContext, String packagename) {
        PackageInfo packageInfo = null;
        try {
            packageInfo = mContext.getPackageManager().getPackageInfo(packagename, 0);
        } catch (PackageManager.NameNotFoundException e) {
            packageInfo = null;
            e.printStackTrace();
        } finally {
            return packageInfo == null ? false : true;
        }
    }

這里要著重說一下這個方法,網上這個方法有很多代承,但一般都是在這個finally的位置進行if-else判斷汁蝶,判斷packageName是否為null。但是我用起來不太順手论悴,不知道為什么沒有人說過這個問題掖棉。
  一旦程序出現異常,進入了catch語句意荤,那之后的if判斷是沒有作用的啊片。

if (packageInfo == null) {
      return false;
  } else { // 如果進入了catch只锻,無論packageInfo是否為null玖像,程序都會走else條件句
      return true;
  }
3.根據各大平臺提供的URI,進行相關頁面的跳轉

這里提供各平臺相關的地址齐饮,具體搜索:【平臺名】+URI API捐寥,就可以找到想要的結果。
高德:http://lbs.amap.com/api/amap-mobile/guide/android/route
百度:http://lbsyun.baidu.com/index.php?title=uri/api/android
騰訊:http://lbs.qq.com/uri_v1/guide-route.html

各個平臺基本上都有對應的Uri地址以及對應的調用示例祖驱,依樣畫葫蘆基本上都可以實現握恳。

// 百度地圖
Intent naviIntent = new Intent("android.intent.action.VIEW", android.net.Uri.parse("baidumap://map/geocoder?location=" + mEndPoint.getLatitude() + "," + mEndPoint.getLongitude()));
mContext.startActivity(naviIntent);
// 高德地圖
naviIntent = new Intent("android.intent.action.VIEW", android.net.Uri.parse("androidamap://route?sourceApplication=appName&slat=&slon=&sname=我的位置&dlat="+ mEndPoint.getLatitude() +"&dlon="+ mEndPoint.getLongitude()+"&dname=目的地&dev=0&t=2"));
mContext.startActivity(naviIntent);
// 騰訊地圖
naviIntent = new Intent("android.intent.action.VIEW", android.net.Uri.parse("qqmap://map/routeplan?type=drive&from=&fromcoord=&to=目的地&tocoord=" + mEndPoint.getLatitude() + "," + mEndPoint.getLongitude() + "&policy=0&referer=appName"));
mContext.startActivity(naviIntent);

具體方法名決定著跳轉的頁面,比如上面高德和騰訊方法為routeplan捺僻,線路規(guī)劃乡洼,跳轉的都是導航方式選擇頁面;而百度為geocoder匕坯,跳轉的是目的地位置詳情頁面束昵。

都是常用的一些功能,就不放圖啦~就醬葛峻。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末锹雏,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子术奖,更是在濱河造成了極大的恐慌礁遵,老刑警劉巖轻绞,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異佣耐,居然都是意外死亡政勃,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門晰赞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來稼病,“玉大人,你說我怎么就攤上這事掖鱼∪蛔撸” “怎么了?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵戏挡,是天一觀的道長芍瑞。 經常有香客問我,道長褐墅,這世上最難降的妖魔是什么拆檬? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮妥凳,結果婚禮上竟贯,老公的妹妹穿的比我還像新娘。我一直安慰自己逝钥,他們只是感情好屑那,可當我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著艘款,像睡著了一般持际。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上哗咆,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天蜘欲,我揣著相機與錄音,去河邊找鬼晌柬。 笑死姥份,一個胖子當著我的面吹牛,可吹牛的內容都是我干的年碘。 我是一名探鬼主播澈歉,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼盛泡!你這毒婦竟也來了闷祥?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凯砍,沒想到半個月后箱硕,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡悟衩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年剧罩,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片座泳。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡惠昔,死狀恐怖,靈堂內的尸體忽然破棺而出挑势,到底是詐尸還是另有隱情镇防,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布潮饱,位于F島的核電站来氧,受9級特大地震影響,放射性物質發(fā)生泄漏香拉。R本人自食惡果不足惜啦扬,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凫碌。 院中可真熱鬧扑毡,春花似錦、人聲如沸盛险。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽枉层。三九已至泉褐,卻和暖如春赐写,著一層夾襖步出監(jiān)牢的瞬間鸟蜡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工挺邀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留揉忘,地道東北人。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓端铛,卻偏偏與公主長得像泣矛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子禾蚕,可洞房花燭夜當晚...
    茶點故事閱讀 44,974評論 2 355

推薦閱讀更多精彩內容