geocoding_reverse不适用于实际设备,但适用于模拟器Android Studio

问题描述

这是我的代码

    val btnbymap = mycustomview.findViewById<Button>(R.id.edit_by_map)


            btnbymap.setonClickListener {

                if (ContextCompat.checkSelfPermission(
                        requireContext(),android.Manifest.permission.ACCESS_FINE_LOCATION
                    ) !=
                    PackageManager.PERMISSION_GRANTED
                    && ContextCompat.checkSelfPermission(
                        requireContext(),android.Manifest.permission.ACCESS_COARSE_LOCATION
                    ) != PackageManager.PERMISSION_GRANTED
                ) {

                    this.requestPermissions(
                        arrayOf(
                            android.Manifest.permission.ACCESS_FINE_LOCATION,android.Manifest.permission.ACCESS_COARSE_LOCATION
                        ),RequestCode
                    )


                } else {


                    fusedLocationProviderClient =
                        LocationServices.getFusedLocationProviderClient(vl.context)
                    fusedLocationProviderClient.lastLocation.addOnSuccessListener(requireActivity()) {


                        if (it != null) {



                            val latitude: Double = it.latitude
                            val longitude: Double = it.longitude

                            val geocoder = Geocoder(this.context,Locale.getDefault())

                            try {

                                val address : List<Address> =
                                geocoder.getFromLocation(latitude,longitude,1)
                                val adress1 = address[0].countryName

                                Toast.makeText(this.context,adress1.toString(),Toast.LENGTH_LONG).show()


                            } catch (e: Exception) {

                                Toast.makeText(
                                    this.context,"can't handle this",Toast.LENGTH_SHORT
                                )
                                    .show()

                            }


                        } else {


                            Toast.makeText(context,"can't find location",Toast.LENGTH_SHORT)
                                .show()

                        }
                    }

                }
            }

        }


        return vl

    }

    override fun onRequestPermissionsResult(
        requestCode: Int,permissions: Array<String>,grantResults: IntArray
    ) {
        when (requestCode) {
            1 -> {
                if (grantResults.isNotEmpty() && grantResults[0] ==
                    PackageManager.PERMISSION_GRANTED
                ) {
                    if ((ContextCompat.checkSelfPermission(
                            requireContext(),android.Manifest.permission.ACCESS_FINE_LOCATION
                        ) ==
                                PackageManager.PERMISSION_GRANTED)
                    ) {
                        Toast.makeText(context,"Permission Granted",Toast.LENGTH_SHORT).show()
                    }
                } else {
                    Toast.makeText(context,"Permission Denied",Toast.LENGTH_SHORT).show()
                }
                return
            }
        }
    }


}

我想使用地址解析器从LatLngn(坐标)获取地址

当我使用此方法(geocoding_reverse)时,模拟器android studio会给我回地址(国家名),但在我的真实设备中,catch方法会给我回信(无法处理)。

为什么当我使用仿真器时,try方法有效,但在实际设备中却变为catch方法

我的代码哪里错误

我该如何处理? tnk处于先进状态

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)