一、準備
通常地段化,在打開一個第三方軟件前,要判斷它是否安裝凤类,如果沒安裝穗泵,要么給出相應提示,要么跳轉(zhuǎn)到應用市場谜疤。這里我們簡單點,直接給提示夷磕。在下面的方法中,傳入上下文和要判斷的應用的包名:
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 {
Log.i("app is install?--->", String.valueOf(packageInfo!=null));
return packageInfo != null;
}
}
二尺棋、開始
創(chuàng)建打開第三方應用并傳遞參數(shù)的方法(以高德地圖為例)
/**
* 啟動高德App進行導航
* @param lat 目的地緯度
* @param lng 目的地經(jīng)度
*/
public static void openGaoDeNavi(double lat,double lng) {
StringBuffer stringBuffer = new StringBuffer("androidamap://navi?sourceApplication=")
.append("amap").append("&lat=").append(lat)
.append("&lon=").append(lng)
.append("&dev=").append(1)
.append("&style=").append(0);
Intent intent = new Intent(Intent.ACTION_VIEW, android.net.Uri.parse(stringBuffer.toString()));
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setPackage("com.autonavi.minimap");
cont.startActivity(intent);
}
三绵跷、使用
if (isPackageInstalled(MainActivity.this,"com.autonavi.minimap"))
{
MapUtils.openGaoDeNavi(32.543401,101.111101);
}
else
Toast.makeText(MainActivity.this, "你沒安裝高德地圖", Toast.LENGTH_SHORT).show();
四、封裝工具類MapUtils.java
public class MapUtils {
@SuppressLint("StaticFieldLeak")
private static Context cont;
public static void init(Context context){
cont=context;
}
/**
* 啟動高德App進行導航
* @param lat 目的地緯度
* @param lng 目的地經(jīng)度
*/
public static void openGaoDeNavi(double lat,double lng) {
StringBuffer stringBuffer = new StringBuffer("androidamap://navi?sourceApplication=")
.append("amap").append("&lat=").append(lat)
.append("&lon=").append(lng)
.append("&dev=").append(1)
.append("&style=").append(0);
Intent intent = new Intent(Intent.ACTION_VIEW, android.net.Uri.parse(stringBuffer.toString()));
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setPackage("com.autonavi.minimap");
cont.startActivity(intent);
}
/**
* 打開騰訊地圖app并導航
* @param lat 目的地緯度
* @param lng 目的地經(jīng)度
*/
public static void openTencentNavi(double lat,double lng){
StringBuffer stringBuffer= new StringBuffer("qqmap://map/routeplan?type=drive")
.append("&fromcoord=CurrentLocation")
.append("&tocoord=").append(lat).append(",").append(lng)
// .append("&to=吉庚")
.append("&referer=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77");
Intent intent = new Intent(Intent.ACTION_VIEW, android.net.Uri.parse(stringBuffer.toString()));
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setPackage("com.tencent.map");
cont.startActivity(intent);
}
/**
* 打開百度地圖導航客戶端
* @param lat 目的地緯度
* @param lng 目的地經(jīng)度
*/
public static void openBaiduNavi(double lat,double lng) {
StringBuffer stringBuffer = new StringBuffer("baidumap://map/navi?location=")
.append(lat).append(",")
.append(lng)
.append("&type=TIME");
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(stringBuffer.toString()));
intent.setPackage("com.baidu.BaiduMap");
cont.startActivity(intent);
}
}
五、特別鳴謝
安卓通過經(jīng)緯度净当,實現(xiàn)intent調(diào)用百度,高德俘闯,Google地圖客戶端實現(xiàn)駕車導航功能
Android App調(diào)用跳轉(zhuǎn)百度地圖忽冻、高德地圖真朗、騰訊地圖進行目的地導航
六僧诚、參考文獻
各大地圖的詳細配置參數(shù)秀菱,可以查閱官方接口文檔
1蹭睡、百度地圖:http://lbsyun.baidu.com/index.php?title=uri/api/android
2赶么、高德地圖:https://lbs.amap.com/api/amap-mobile/guide/android/navigation
3、騰訊地圖:http://lbs.qq.com/uri_v1/guide-mobile-navAndRoute.html