Ошибка Android GRPC при получении адреса из геокодера в методе geocoder.getFromLocation, даже используемом в AsyncTask - PullRequest
0 голосов
/ 02 июля 2019

Я получаю сообщение об ошибке при использовании этого метода.При переполнении стека этот вопрос задавался раньше, какой-то другой ответ использовал этот метод в AsyncTask, и я попробовал этот путь, но проблема не решена.

@SuppressLint("StaticFieldLeak")
    private class getStartLocationAddress extends AsyncTask<Void, Void, Void> {

        //assign result :
        StringBuilder result = new StringBuilder();


        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected Void doInBackground(Void... voids) {

            //getting onCameraIdle listener Supplied latlng address :

            try {
                Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.US);
                List<Address> addresses = geocoder.getFromLocation(Common.mLastLocation.getLatitude(), Common.mLastLocation.getLongitude(), 1);
                if (addresses.size() > 0) {
                    Address address = addresses.get(0);
                    for (int i = 0; i <= addresses.get(0).getMaxAddressLineIndex(); i++) {
                        if (i == addresses.get(0).getMaxAddressLineIndex()) {
                            result.append(addresses.get(0).getAddressLine(i));
                        } else {
                            result.append(addresses.get(0).getAddressLine(i)).append(",");
                        }

                    }


                }


            } catch (IOException e) {//network or other I/O problems
                e.printStackTrace();
            }catch (IllegalArgumentException ia){//passing Invalid latitude or Longitude
            }


            return null;
        }


        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);

            if (result != null) {
                Common.finalPassengerLocationInString= result.toString();


            }else {

                Common.finalPassengerLocationInString= "Your Present Location";

            }


        }
    }

Но иногда приложение останавливается.Что делать?

...