最近须要作一个关于导航的功能,得用手机存在的地图来打开,而后从网上找了一篇博客里面只写了怎么判断手机是否安装百度地图的,从网上各类翻,终于在高德地图上找到一句话。android
开发者在调用URI 以前须要先判断是否安装了高德地图APP。若是没有安装,下载安装高德地图。而后调用相关地图功能,如周边实时路况信息显示,示例以下:ide
Intent intent = new Intent("android.intent.action.VIEW", android.net.Uri.parse("androidamap://showTraffic?sourceApplication=softname&poiid=BGVIS1&lat=36.2&lon=116.1&level=10&dev=0")); intent.setPackage(“com.autonavi.minimap”); startActivity(intent);
而后综合网上那篇博客代码以下,.net
/** * 检查手机上是否安装了指定的软件 * @param context * @param packageName:应用包名 * @return */ private 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); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.common_right: //若是已安装, if(isAvilible(mcontext,"com.baidu.BaiduMap")) {//传入指定应用包名 WinToast.makeText(mcontext,"即将用百度地图打开导航").show(); Uri mUri = Uri.parse("geo:"+jingdu+","+weidu+"?q="+title); Intent mIntent = new Intent(Intent.ACTION_VIEW,mUri); startActivity(mIntent); }else if(isAvilible(mcontext,"com.autonavi.minimap")){ WinToast.makeText(mcontext,"即将用高德地图打开导航").show(); Uri mUri = Uri.parse("geo:"+jingdu+","+weidu+"?q="+title); Intent intent = new Intent("android.intent.action.VIEW",mUri); startActivity(intent); }else { WinToast.makeText(mcontext,"请安装第三方地图方可导航").show(); return; } break; default: break; } }
我这里判断了高德和百度的,但愿能帮到大家code