package cn.flightfeather.thirdappmodule.util; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.support.v7.app.AlertDialog; import android.widget.Toast; import com.amap.api.maps.model.LatLng; import java.util.ArrayList; import java.util.List; /** * Created by note_ff_1602 on 2018/2/26. * 开始高德导航 */ public class AmapNavi { private Context context; public AmapNavi(Context context) { this.context = context; } //开始导航功能,坐标为高德坐标 public void startNavi(final double lat, final double lng){ if (lat!=0&&lng!=0){ if (isAvilible(context,"com.autonavi.minimap")){ AlertDialog.Builder dialog = new AlertDialog.Builder(context); dialog.setTitle("要开始导航吗"); dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { LatLng latlng = new LatLng(lat,lng); goToGaode(latlng.latitude,latlng.longitude); } }); dialog.setNegativeButton("取消",null); dialog.show(); }else Toast.makeText(context, "请安装高德地图来启用导航功能", Toast.LENGTH_SHORT).show(); }else { Toast.makeText(context, "无定位不能导航", Toast.LENGTH_SHORT).show(); } } public static boolean isAvilible(Context context, String packageName){ //获取packagemanager final PackageManager packageManager = context.getPackageManager(); //获取所有已安装程序的包信息 List packageInfos = packageManager.getInstalledPackages(0); //用于存储所有已安装程序的包名 List packageNames = new ArrayList(); //从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 goToGaode(double lat, double lon) { StringBuffer stringBuffer = new StringBuffer("androidamap://route?sourceApplication=").append("amap"); stringBuffer.append("&dlat=").append(""+lat) .append("&dlon=").append(""+lon) .append("&dev=").append(0) .append("&t=").append(0); Intent intent = new Intent("android.intent.action.VIEW", android.net.Uri.parse(stringBuffer.toString())); intent.setPackage("com.autonavi.minimap"); context.startActivity(intent); } }