Android 通過(guò)Intent調(diào)取導(dǎo)航

前言

公司以前有個(gè)需求,需要使用導(dǎo)航,但是工期很短,那么怎么解決呢?我們想到了URL Scheme來(lái)實(shí)現(xiàn)

URL Scheme是什么

android中的scheme是一種頁(yè)面內(nèi)跳轉(zhuǎn)協(xié)議,是一種非常好的實(shí)現(xiàn)機(jī)制,通過(guò)定義自己的scheme協(xié)議,可以非常方便跳轉(zhuǎn)app中的各個(gè)頁(yè)面;通過(guò)scheme協(xié)議,服務(wù)器可以定制化告訴App跳轉(zhuǎn)那個(gè)頁(yè)面,可以通過(guò)通知欄消息定制化跳轉(zhuǎn)頁(yè)面,可以通過(guò)H5頁(yè)面跳轉(zhuǎn)頁(yè)面等。

Map APP相關(guān)

目前市場(chǎng)上占有率比較高的地圖主要有:百度,高德,谷歌(CN大陸暫時(shí)不能使用),騰訊

四大公司相關(guān)的API平臺(tái)問(wèn)題

百度地圖:http://lbsyun.baidu.com/index.php?title=uri/api/android

高德地圖:http://lbs.amap.com/api/uri-api/android-uri-explain/

騰訊地圖:http://lbs.qq.com/uri_v1/index.html

谷歌地圖:https://developers.google.com/maps/documentation/android-api/intents

代碼示例

檢查是否安裝

* 檢查手機(jī)上是否安裝了指定的軟件

* @param context

* @param packageName:應(yīng)用包名

* @return

*/

public static boolean isAvilible(Context context, String packageName){

//獲取packagemanager

final PackageManager packageManager = context.getPackageManager();

//獲取所有已安裝程序的包信息

List packageInfos = packageManager.getInstalledPackages(0);

//用于存儲(chǔ)所有已安裝程序的包名

List packageNames = new ArrayList();

//從pinfo中將包名字逐一取出,壓入pName list中

if(packageInfos != null){

for(int i = 0; i < packageInfos.size(); i++){

String packName = packageInfos.get(i).packageName;

packageNames.add(packName);

}}

//判斷packageNames中是否有目標(biāo)程序的包名,有TRUE,沒(méi)有FALSE

return packageNames.contains(packageName);

}

百度地圖

if(isAvilible(context,"com.baidu.BaiduMap")){//傳入指定應(yīng)用包名

try {

//? intent = Intent.getIntent("intent://map/direction?origin=latlng:34.264642646862,108.95108518068|name:我家&destination=大雁塔&mode=driving?ion=西安&src=yourCompanyName|yourAppName#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");

intent = Intent.getIntent("intent://map/direction?" +

//"origin=latlng:"+"34.264642646862,108.95108518068&" +? //起點(diǎn)? 此處不傳值默認(rèn)選擇當(dāng)前位置

"destination=latlng:"+location[0]+","+location[1]+"|name:我的目的地"+? ? ? ? //終點(diǎn)

"&mode=driving&" +? ? ? ? ? //導(dǎo)航路線方式

"region=北京" +? ? ? ? ? //

"&src=慧醫(yī)#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");

context.startActivity(intent); //啟動(dòng)調(diào)用

} catch (URISyntaxException e) {

Log.e("intent", e.getMessage());

}

}else{

//未安裝

//market為路徑,id為包名

//顯示手機(jī)上所有的market商店

Toast.makeText(context, "您尚未安裝百度地圖", Toast.LENGTH_LONG).show();

Uri uri = Uri.parse("market://details?id=com.baidu.BaiduMap");

intent = new Intent(Intent.ACTION_VIEW, uri);

context.startActivity(intent);

}

高德地圖

if (isAvilible(context, "com.autonavi.minimap")) {

try{

intent = Intent.getIntent("androidamap://navi?sourceApplication=慧醫(yī)&poiname=我的目的地&lat="+location[0]+"&lon="+location[1]+"&dev=0");

context.startActivity(intent);

} catch (URISyntaxException e)

{e.printStackTrace(); }

}else{

Toast.makeText(context, "您尚未安裝高德地圖", Toast.LENGTH_LONG).show();

Uri uri = Uri.parse("market://details?id=com.autonavi.minimap");

intent = new Intent(Intent.ACTION_VIEW, uri);

context.startActivity(intent);

}

谷歌地圖:

if (isAvilible(context,"com.google.android.apps.maps")) {

Uri gmmIntentUri = Uri.parse("google.navigation:q="+location[0]+","+location[1] +", + Sydney +Australia");

Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);

mapIntent.setPackage("com.google.android.apps.maps");

context.startActivity(mapIntent);

}else {

Toast.makeText(context, "您尚未安裝谷歌地圖", Toast.LENGTH_LONG).show();

Uri uri = Uri.parse("market://details?id=com.google.android.apps.maps");

intent = new Intent(Intent.ACTION_VIEW, uri);

context.startActivity(intent);? }

騰訊地圖

騰訊暫時(shí)不提供相關(guān)接口

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程,因...
    小菜c閱讀 7,391評(píng)論 0 17
  • Intent應(yīng)該算是Android中特有的東西。你可以在Intent中指定程序要執(zhí)行的動(dòng)作(比如:view,edi...
    Ten_Minutes閱讀 3,798評(píng)論 0 6
  • 這個(gè)世界 令人感到失望 不是因?yàn)樗碾U(xiǎn)惡 而是因?yàn)樗钠接? 這段生命 ...
    海月先生閱讀 655評(píng)論 0 12
  • 此刻,很想找個(gè)地圖看看, 從旅行到漂泊, 我走過(guò)了多少個(gè)城市; 此刻,很想回頭看看, 從校園到社會(huì), 我收獲了什么...
    等風(fēng)來(lái)的野丫頭閱讀 208評(píng)論 0 0
  • 剛開(kāi)始寫(xiě)公眾號(hào)的想法很功利,是因?yàn)榭吹胶枚嗳送ㄟ^(guò)寫(xiě)作掙到了錢(qián)。于是自己也跟風(fēng)。 每一個(gè)人都有從眾的心理。這就好比你...
    易小六閱讀 493評(píng)論 5 4

友情鏈接更多精彩內(nèi)容