Android Studio отправка смс - PullRequest
       0

Android Studio отправка смс

0 голосов
/ 31 октября 2018

У меня проблема с отправкой смс.

Итак, я сделал функцию точно так же, как здесь: https://www.tutorialspoint.com/android/android_sending_sms.htm

Работало отлично, но после отправки 3 СМС перестало работать. Нет даже тостов, которые бы не работали. То же самое происходит с другим приложением, которое также работает.

Разрешение на отправку SMS из этого приложения включено.

Мои SMS из основного приложения телефона работают правильно.

Кажется, он просто перестал работать, почему и как это исправить?

Наиболее релевантный код:

   protected void sendSMSMessage() {
      phoneNo = txtphoneNo.getText().toString();
      message = txtMessage.getText().toString();

      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,String permissions[], int[] grantResults) {
      switch (requestCode) {
         case MY_PERMISSIONS_REQUEST_SEND_SMS: {
            if (grantResults.length > 0
               && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                  SmsManager smsManager = SmsManager.getDefault();
                  smsManager.sendTextMessage(phoneNo, null, message, null, null);
                  Toast.makeText(getApplicationContext(), "SMS sent.", 
                     Toast.LENGTH_LONG).show();
            } else {
               Toast.makeText(getApplicationContext(), 
                  "SMS faild, please try again.", Toast.LENGTH_LONG).show();
               return;
            }
         }
      }
   }

1 Ответ

0 голосов
/ 31 октября 2018

Вот что я думаю, проблема в вашем коде. Как только разрешение отключено, оно предложит разрешить приложению отправить диалоговое окно с разрешением смс, а когда пользователь ответит разрешением, начнется отправка смс. Теперь проблема в том, что, когда приложению уже разрешено отправлять смс, диалоговое окно разрешений, которое приводит к отправке смс, больше не вызывается, поэтому метод onPermissionResult больше не вызывается, что означает, что отправка смс больше не инициируется. Это основано на текущем фрагменте кода, который вы предоставили. Надеюсь, это прояснит ситуацию.

Edit: Вы должны поставить else заявление на

if (ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) { }

код и вызовите отправку смс туда, потому что приложению уже предоставлено разрешение на это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...