Android使用intent調取導航或者地圖

關於APP的URL Scheme相關內容這裏就不介紹了 大家可以自行去研究研究

這裏主要介紹地圖的相關知識,未來有時間給大家上個demo。 
百度地圖: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

判斷一下是否安裝此APP

     * 檢查手機上是否安裝了指定的軟件 
     * @param context 
     * @param packageName:應用包名 
     * @return 
     */  
    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);  
  }   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

百度地圖跳轉相關代碼

if(isAvilible(context,"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.getIntent("intent://map/direction?" +  
                                    //"origin=latlng:"+"34.264642646862,108.95108518068&" +   //起點  此處不傳值默認選擇當前位置
                                    "destination=latlng:"+location[0]+","+location[1]+"|name:我的目的地"+        //終點
                                    "&mode=driving&" +          //導航路線方式
                                    "region=北京" +           //
                                    "&src=慧醫#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");  
                            context.startActivity(intent); //啓動調用  
                        } catch (URISyntaxException e) {  
                            Log.e("intent", e.getMessage());  
                        }  
                    }else{//未安裝  
                        //market爲路徑,id爲包名  
                        //顯示手機上所有的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);   
                    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

高德地圖相關代碼:

if (isAvilible(context, "com.autonavi.minimap")) {
                    try{  
                         intent = Intent.getIntent("androidamap://navi?sourceApplication=慧醫&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);
                    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

谷歌地圖:

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);  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

稍後上傳相關的demo,效果圖大家應該都可以知道,我就不多說了。由於能力有限,不足之處請諒解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章