1. 程式人生 > >呼叫第三方地圖導航,高德、百度、谷歌,無需引用sdk

呼叫第三方地圖導航,高德、百度、谷歌,無需引用sdk

   先判斷是否存在地圖,存在就可以進入導航,沒有的話就預設進入市場下載app,程式碼如下:

i1.setOnClickListener(new View.OnClickListener() {
    @Override
public void onClick(View v) {
        new AlertDialog.Builder(mContext).setSingleChoiceItems(new String[]{"百度", "高德", "谷歌"}, 0, new DialogInterface.OnClickListener() {
            @Override
public void onClick(DialogInterface dialog, int which) { if (which == 0) { baidu(); } else if (which == 1) { gaode(); } else { guge(); } } }).show(); } });

 /*  * 檢查手機上是否安裝了指定的軟體
      * @param context
      * @param packageName:應用包名
*/ public static boolean isAvilible(Context context, String packageName) { //獲取packagemanager final PackageManager packageManager = context.getPackageManager(); //獲取所有已安裝程式的包資訊 List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0); //用於儲存所有已安裝程式的包名 List<String> packageNames = new
ArrayList<String>(); //從pinfo中將包名字逐一取出,壓入pName list中 if (packageInfos != null) { for (int i = 0; i < packageInfos.size(); i++) { String packName = packageInfos.get(i).packageName; packageNames.add(packName); } } //判斷packageNames中是否有目標程式的包名,有TRUE,沒有FALSE return packageNames.contains(packageName); } private void baidu() { if (isAvilible(mContext, "com.baidu.BaiduMap")) {//傳入指定應用包名 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 = Intent.getIntent("intent://map/direction?" + //"origin=latlng:"+"34.264642646862,108.95108518068&" + //起點 此處不傳值預設選擇當前位置 "destination=latlng:" + 34.264642646862 + "," + 108.95108518068 + "|name:東莞" + //終點 "&mode=driving&" + //導航路線方式 "region=北京" + // "&src=我的app名字#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end"); mContext.startActivity(intent); //啟動呼叫 } catch (URISyntaxException e) { Log.e("intent", e.getMessage()); } } else {//未安裝 //market為路徑,id為包名 //顯示手機上所有的market商店 Toast.makeText(mContext, "您尚未安裝百度地圖", Toast.LENGTH_LONG).show(); Uri uri = Uri.parse("market://details?id=com.baidu.BaiduMap"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); mContext.startActivity(intent); } } private void gaode() { if (isAvilible(mContext, "com.autonavi.minimap")) { try { Intent intent = Intent.getIntent("androidamap://navi?sourceApplication=我的app名字&poiname=廣州&lat=" + 34.264642646862 + "&lon=" + 108.95108518068 + "&dev=0"); mContext.startActivity(intent); } catch (URISyntaxException e) { e.printStackTrace(); } } else { Toast.makeText(mContext, "您尚未安裝高德地圖", Toast.LENGTH_LONG).show(); Uri uri = Uri.parse("market://details?id=com.autonavi.minimap"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); mContext.startActivity(intent); } } private void guge() { if (isAvilible(mContext,"com.google.android.apps.maps")) { Uri gmmIntentUri = Uri.parse("google.navigation:q="+34.264642646862 +","+108.95108518068 +", + Sydney +Australia"); Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); mapIntent.setPackage("com.google.android.apps.maps"); mContext.startActivity(mapIntent); }else { Toast.makeText(mContext, "您尚未安裝谷歌地圖", Toast.LENGTH_LONG).show(); Uri uri = Uri.parse("market://details?id=com.google.android.apps.maps"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); mContext.startActivity(intent); } }