smsManager.sendMultipartTextMessage не работает должным образом - PullRequest
0 голосов
/ 06 февраля 2020

Здесь я пытаюсь отправить сообщение, используя SmsManager.getDefault() как

    val smsManager = SmsManager.getDefault()

    val parts: ArrayList<String> = smsManager.divideMessage(msg+"")

    smsManager.sendMultipartTextMessage("+9198****91", null, parts, null, null); 

. Отлично работает на Samsung A50, OnePlus 3T et c. за исключением OnePlus GM1911 (OnePlus 7 pro)

разрешений в манифесте

<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

, поэтому у кого-либо есть идеи или предложения по решению этой проблемы.

1 Ответ

0 голосов
/ 06 февраля 2020

Я думаю, вам нужно проверить разрешение в коде для SDK, больше или равное M (Marshmallow) -

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
  {
      if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission. SEND_SMS) == PackageManager.PERMISSION_GRANTED) {
      //  you can receive sms   
      } 
      else
      {
         ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission. SEND_SMS}, 411);
      }
  }
  else
  {
    //  you can receive sms          
  }
}

И по результату действий пользователя -

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == 411) {
        if (grantResults.length == 0 || grantResults == null) {
             // show dialog that you need access to go ahead
        } else if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            // Your code here permission granted
        } else if (grantResults[0] == PackageManager.PERMISSION_DENIED) {
             // show dialog that you need access to go ahead
        }
    }
}
...