geocoding_reverse не работает на реальном устройстве, но работает на эмуляторе Android studio

#android #android-studio #google-maps #kotlin #reverse-geocoding

#Android #android-studio #google-карты #kotlin #обратное геокодирование

Вопрос:

Это мой код :

     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
                    amp;amp; 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() amp;amp; 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 продвигается

Комментарии:

1. ну, что вам говорит фактическая ошибка?

2. в не выдает мне ошибку. на самом деле не сработало хорошо. он должен быть направлен на метод try, но переходит в метод catch.

3. он переходит в блок catch, что означает ошибку, прочитайте, что такое исключение

4. «не удается обработать это» измените на «Исключение: » e.GetMessage().

5. я только что отладил API, а не выпустил. может быть, это моя проблема?