跳转高德地图的一个carsh

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW cat=[android.intent.category.DEFAULT] dat=amapuri://route/plan/?dlat=30.241878&dlon=120.440527&dname=杭州萧山机场T1&dev=0&t=0 }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2114)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1757)
at android.app.Activity.startActivityForResult(Activity.java:4800)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:675)
at android.app.Activity.startActivityForResult(Activity.java:4740)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:662)
at android.app.Activity.startActivity(Activity.java:5161)
at android.app.Activity.startActivity(Activity.java:5129)
at com.geely.travel.geelytravel.utils.MapUtils.openGaodeMap(MapUtils.kt:70)
at com.geely.travel.geelytravel.ui.main.stroke.StrokeDetailAirTicketActivity$initListener$1$$special$$inlined$show$lambda$1.invoke(StrokeDetailAirTicketActivity.kt:60)
at com.geely.travel.geelytravel.ui.main.stroke.StrokeDetailAirTicketActivity$initListener$1$$special$$inlined$show$lambda$1.invoke(StrokeDetailAirTicketActivity.kt:36)
at com.afollestad.materialdialogs.internal.list.PlainListDialogAdapter.itemClicked(PlainListDialogAdapter.kt:64)
at com.afollestad.materialdialogs.internal.list.PlainListViewHolder.onClick(PlainListDialogAdapter.kt:34)
at android.view.View.performClick(View.java:6648)
at android.view.View.performClickInternal(View.java:6620)
at android.view.View.access$3100(View.java:787)
at android.view.View$PerformClick.run(View.java:26167)
at android.os.Handler.handleCallback(Handler.java:891)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:7539)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958)

报错地方的代码

  /**
     * 打开高德地图
     * @param context            上下文
     * @param destination        经纬度
     * @param destinationAddress 目标地址
     * 高德地图:http://lbs.amap.com/api/amap-mobile/guide/android/route
     */
    fun openGaodeMap(context: Context, destination: LatLng,
                     destinationAddress: String) {
        val intent = Intent()
            intent.action = "android.intent.action.VIEW"
            intent.addCategory("android.intent.category.DEFAULT")
            intent.data = Uri.parse("amapuri://route/plan/?" +
                    "dlat=" + destination.latitude +
                    "&dlon=" + destination.longitude +
                    "&dname=" + destinationAddress +
                    "&dev=0" +
                    "&t=0")
            context.startActivity(intent)
    }

原因:低版本的高德地图导致,手机中的高德地图版本是2016年之前的版本,就会报这个错误,2016-01-28的版本已经修复这个carsh,可以在豌豆荚下载历史版本进行测试,获得修复版本的版本号,versionCode558是2015-12-30这个版本的版本号。

解决方法:获取手机的高德地图的版本,低于修复版本的就提示安装最新版本

  private fun getMapVersionCode(context: Context, packageName: String): Int {
        val packageManager = context.packageManager
        val packageInfos = packageManager.getInstalledPackages(0)
        if (packageInfos != null) {
            for (i in packageInfos.indices) {
                val packName = packageInfos[i].packageName
                if (packName == packageName) {
                    return packageInfos[i].versionCode
                }
            }
        }
        return 0
    }
    fun openGaodeMap(context: Context, destination: LatLng,
                     destinationAddress: String) {
        try {
            val versionCode = getMapVersionCode(context, GAODE_PACKAGE_NAME)
            if (versionCode <= 558) {
                context.toast("检测到当前高德地图版本过低无法跳转请先升级高德地图")
                return
            }
            val intent = Intent()
            intent.action = "android.intent.action.VIEW"
            intent.addCategory("android.intent.category.DEFAULT")
            intent.data = Uri.parse("amapuri://route/plan/?" +
                    "dlat=" + destination.latitude +
                    "&dlon=" + destination.longitude +
                    "&dname=" + destinationAddress +
                    "&dev=0" +
                    "&t=0")
            context.startActivity(intent)
        } catch (e: Exception) {
            CrashReport.postCatchedException(Exception(e))
        }
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Vue中实现点击跳转到某一个点位,需要使用高德地图的JavaScript API。下面是一个实现的示例代码: 1. 首先,在页面中引入高德地图的JS文件: ```html <!-- 高德地图JS文件 --> <script src="https://webapi.amap.com/maps?v=1.4.15&key=您申请的key值"></script> ``` 2. 在Vue组件中,定义地图容器和地图对象: ```vue <template> <div id="map-container"></div> </template> <script> export default { data() { return { // 地图对象 map: null, }; }, mounted() { // 初始化地图 this.initMap(); }, methods: { initMap() { // 创建地图对象 this.map = new AMap.Map('map-container', { zoom: 13, // 地图缩放级别 center: [116.397428, 39.90923], // 地图中心点 }); }, }, }; </script> ``` 3. 在地图上添加标记,并给标记添加点击事件: ```vue <template> <div id="map-container"></div> </template> <script> export default { data() { return { // 地图对象 map: null, // 标记对象 marker: null, }; }, mounted() { // 初始化地图 this.initMap(); }, methods: { initMap() { // 创建地图对象 this.map = new AMap.Map('map-container', { zoom: 13, // 地图缩放级别 center: [116.397428, 39.90923], // 地图中心点 }); // 创建标记对象 this.marker = new AMap.Marker({ position: [116.397428, 39.90923], // 标记位置 map: this.map, // 地图对象 }); // 给标记添加点击事件 this.marker.on('click', () => { // 跳转到标记位置 this.map.setCenter([116.397428, 39.90923]); }); }, }, }; </script> ``` 在上面的代码中,当标记被点击时,会调用`map.setCenter`方法将地图中心点设置为标记位置,这样就可以实现点击跳转到某一个点位了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值