大学生做网站步骤,企业网站运营外包费用,天津全面解封最新通告,汉中市住建局建设厅网站官网开年第一篇#xff0c;处理了一下年前的小问题。
问题#xff1a;本地app跳转到第三方app地图进行导航#xff0c;获取不到第三方地图是否安装。
解决#xff1a;
1.添加包名
This can be done by adding a queries element in the Android manifest.在app下的…开年第一篇处理了一下年前的小问题。
问题本地app跳转到第三方app地图进行导航获取不到第三方地图是否安装。
解决
1.添加包名
This can be done by adding a queries element in the Android manifest.在app下的manifest文件内manifest标签下添加queries标签设置包名 queriespackage android:namecom.autonavi.minimap /package android:namecom.baidu.BaiduMap /package android:namecom.tencent.map //queries
2.MapUtil工具类
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;import java.io.File;public class MapUtil {public static final String PN_GAODE_MAP com.autonavi.minimap;// 高德地图包名public static final String PN_BAIDU_MAP com.baidu.BaiduMap; // 百度地图包名public static final String PN_TENCENT_MAP com.tencent.map; // 腾讯地图包名/*** 检查地图应用是否安装* return*/public static boolean isGdMapInstalled(){return isInstallPackage(PN_GAODE_MAP);}public static boolean isBaiduMapInstalled(){return isInstallPackage(PN_BAIDU_MAP);}public static boolean isTencentMapInstalled(){return isInstallPackage(PN_TENCENT_MAP);}/*** 判断是否安装目标应用*/private static boolean isInstallPackage(String packageName) {/**判断 API版本是否大于 29Android 11* 判断应用是否安装(高德或者百度等)注意存储分区* 大于29会强制分区*/if (Build.VERSION.SDK_INT 24) {return new File(/data/data/ packageName).exists();}else {return new File(storage/emulated/0/Android/data/ packageName).exists();}}/*** 百度转高德* param bd_lat* param bd_lon* return*/public static double[] bdToGaoDe(double bd_lat, double bd_lon) {double[] gd_lat_lon new double[2];double PI 3.14159265358979324 * 3000.0 / 180.0;double x bd_lon - 0.0065, y bd_lat - 0.006;double z Math.sqrt(x * x y * y) - 0.00002 * Math.sin(y * PI);double theta Math.atan2(y, x) - 0.000003 * Math.cos(x * PI);gd_lat_lon[0] z * Math.cos(theta);gd_lat_lon[1] z * Math.sin(theta);return gd_lat_lon;}/*** 高德、腾讯转百度* param gd_lon* param gd_lat* return*/private static double[] gaoDeToBaidu(double gd_lon, double gd_lat) {double[] bd_lat_lon new double[2];double PI 3.14159265358979324 * 3000.0 / 180.0;double x gd_lon, y gd_lat;double z Math.sqrt(x * x y * y) 0.00002 * Math.sin(y * PI);double theta Math.atan2(y, x) 0.000003 * Math.cos(x * PI);bd_lat_lon[0] z * Math.cos(theta) 0.0065;bd_lat_lon[1] z * Math.sin(theta) 0.006;return bd_lat_lon;}/*** 打开高德地图导航功能* param context* param slat 起点纬度* param slon 起点经度* param sname 起点名称 可不填0,0null* param dlat 终点纬度* param dlon 终点经度* param dname 终点名称 必填*/public static void openGaoDeNavi(Context context, double slat, double slon, String sname, double dlat, double dlon, String dname){String uriString null;StringBuilder builder new StringBuilder(amapuri://route/plan?sourceApplicationmaxuslife);if (slat ! 0) {builder.append(sname).append(sname).append(slat).append(slat).append(slon).append(slon);}builder.append(dlat).append(dlat).append(dlon).append(dlon).append(dname).append(dname).append(dev0).append(t0);uriString builder.toString();Intent intent new Intent(Intent.ACTION_VIEW);intent.setPackage(PN_GAODE_MAP);intent.setData(Uri.parse(uriString));context.startActivity(intent);}/*** 打开腾讯地图* params 参考http://lbs.qq.com/uri_v1/guide-route.html** param context* param slat 起点纬度* param slon 起点经度* param sname 起点名称 可不填0,0null* param dlat 终点纬度* param dlon 终点经度* param dname 终点名称 必填* 驾车typedrivepolicy有以下取值0较快捷1无高速2距离policy的取值缺省为0* from dqAddress fromcoord dqLatitude , dqLongitude */public static void openTencentMap(Context context, double slat, double slon, String sname, double dlat, double dlon, String dname) {String uriString null;StringBuilder builder new StringBuilder(qqmap://map/routeplan?typedrivepolicy0refererzhongshuo);if (slat ! 0) {builder.append(from).append(sname).append(fromcoord).append(slat).append(,).append(slon);}builder.append(to).append(dname).append(tocoord).append(dlat).append(,).append(dlon);uriString builder.toString();Intent intent new Intent(Intent.ACTION_VIEW);intent.setPackage(PN_TENCENT_MAP);intent.setData(Uri.parse(uriString));context.startActivity(intent);}/*** 打开百度地图导航功能(默认坐标点是高德地图需要转换)* param context* param slat 起点纬度* param slon 起点经度* param sname 起点名称 可不填0,0null* param dlat 终点纬度* param dlon 终点经度* param dname 终点名称 必填*/public static void openBaiDuNavi(Context context,double slat, double slon, String sname, double dlat, double dlon, String dname){String uriString null;double destination[] gaoDeToBaidu(dlat, dlon);dlat destination[0];dlon destination[1];StringBuilder builder new StringBuilder(baidumap://map/direction?modedriving);if (slat ! 0){//起点坐标转换double[] origin gaoDeToBaidu(slat, slon);slat origin[0];slon origin[1];builder.append(originlatlng:).append(slat).append(,).append(slon).append(|name:).append(sname);}builder.append(destinationlatlng:).append(dlat).append(,).append(dlon).append(|name:).append(dname);uriString builder.toString();Intent intent new Intent(Intent.ACTION_VIEW);intent.setPackage(PN_BAIDU_MAP);intent.setData(Uri.parse(uriString));context.startActivity(intent);}
}
3.调用 MapUtil. openGaoDeNavi(Context context, double slat, double slon, String sname, double dlat, double dlon, String dname)工具类可以直接用SelectDialog就是一个底部弹窗。