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);  
  }   

百度地图跳转相关代码

private void openAMap(Context context) {
        Intent intent;
        //标志浪漫满屋的地址112.980305,28.127302
        String[] location = {"28.127302", "112.980305"};
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);   
                    }

高德地图相关代码:

 private void openB(Context context) {Intent intent;
        //标志浪漫满屋的地址112.980305,28.127302
        String[] location = {"28.127302", "112.980305"};
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);
                    }}

效果:


链接:https://blog.csdn.net/qwer4755552/article/details/51659833

。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值