Я хочу отправить местоположение через сообщение, но иногда оно отправляет сообщение, некоторое время оно отправляет нулевую строку, иногда не отправляет

#java #android

#java #Android

Вопрос:

Это кнопка, нажатием на которую я хочу отправить сообщение получателю, используя текущее местоположение

      b.setOnClickListener(new View.OnClickListener() {
                String loc;
                @Override
                public void onClick(View view) {
                    arrno[0]=num1;
                    arrno[1]=num2;
                    arrno[2]=num3;
                    arrno[3]=num4;

                    requestpermisson();
                    for (int i = 0; i < arrno.length; i  ) {
*here the getter data is stored in the loc String* 
                        loc=getMyLocation();
                        sendSMS(arrno[i], "I am in trouble :n" "My current Address :" loc);

                    }
  

Это просто для отображения сообщения о текущем местоположении и мобильном
числа
для тестирования

 problem is that I get the location   and it sends the SMS with location and sometimes I get a null string and sometimes it does not send
  

SMS (возможно, из-за превышения лимита сообщений)

                     Toast.makeText(getApplicationContext(), ""   num1   ""   num2   ""   num3   ""   num4 " "  loc , Toast.LENGTH_LONG).show();
                }
            });



            locationManager =(LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

            locationListener=new LocationListener() {
                @Override
                public void onLocationChanged(Location location) {

                    if(location!=null) {
                        Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault());
                        try {
                            List<Address> listAddresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);


                            if (listAddresses != null amp;amp; listAddresses.size() > 0) {
                                String address = "";

                                if (listAddresses.get(0).getAddressLine(0) != null) {
                                    address  = listAddresses.get(0).getAddressLine(0)   " ";
                                }

                                if (listAddresses.get(0).getAddressLine(1) != null) {
                                    address  = listAddresses.get(0).getAddressLine(1)   " ";

                                }

                                if (listAddresses.get(0).getAdminArea() != null) {
                                    address  = listAddresses.get(0).getAdminArea()   " ";
                                }

                                if (listAddresses.get(0).getLocality() != null) {
                                    address  = listAddresses.get(0).getLocality()   " ";
                                }





                                // this will show you your current address
                                Toast.makeText(MainActivity.this, address, Toast.LENGTH_SHORT).show();

                                setMyLocation(address);


                            }


                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                    else
                    {
                        Toast.makeText(context, "no location found", Toast.LENGTH_SHORT).show();


                    }


                }

                @Override
                public void onStatusChanged(String provider, int status, Bundle extras) {

                }

                @Override
                public void onProviderEnabled(String provider) {

                }

                @Override
                public void onProviderDisabled(String provider) {

                }
            };






            if(ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION)!=PackageManager.PERMISSION_GRANTED)
            {
                ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},1);


            }
            else
            {
                locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
            }








        }

        private static final int MY_PERMISSIONS_REQUEST_SEND_SMS = 1;
  

Это для запроса разрешения

         public void requestpermisson() {
            if (ContextCompat.checkSelfPermission(this,
                    Manifest.permission.SEND_SMS)
                    != PackageManager.PERMISSION_GRANTED) {
                if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                        Manifest.permission.SEND_SMS)) {
                } else {
                    ActivityCompat.requestPermissions(this,
                            new String[]{Manifest.permission.SEND_SMS},
                            MY_PERMISSIONS_REQUEST_SEND_SMS);
                }
            }
        }






 @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull             String[] permissions, @NonNull int[] grantResults) {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (grantResults.length > 0 amp;amp; grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                if(ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION)==PackageManager.PERMISSION_GRANTED) {

                locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
                }
            }

        }
  

Это функция для отправки sms

         public void sendSMS(String phoneno, String msg){
            Toast.makeText(getApplicationContext(),"In show m",Toast.LENGTH_SHORT).show();

            try{
                SmsManager smsManager=SmsManager.getDefault();
                smsManager.sendTextMessage(phoneno,null,msg,null,null);
                Toast.makeText(getApplicationContext(),"message has been send to "  phoneno,Toast.LENGTH_SHORT).show();
            }
            catch (Exception ex){
                Toast.makeText(getApplicationContext(),"sms not sent",Toast.LENGTH_SHORT).show();
            }
        }
  

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

1. Я опубликовал код в аккуратном формате или мне следует его изменить, это мой первый раз, поэтому нет знаний, пожалуйста, прокомментируйте, если я ошибаюсь