Как получить полный текст сообщения из полученного SMS в kotlin? - PullRequest
1 голос
/ 05 апреля 2019

У меня есть получатель для входящих SMS, объявленных в манифесте:

<receiver
        android:name=".WakeupReceiver"
        android:enabled="true"
        android:exported="true"
        android:permission="android.permission.RECEIVE_SMS"
        android:stopWithTask="false">
        <intent-filter android:priority="999999857">
            <category android:name="android.intent.category.DEFAULT" />

            <action android:name="android.intent.action.SMS_RECEIVED_ACTION" />
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter> 
</receiver>

и у меня есть функция onReceive внутри класса .WakeupReceiver: BroadcastReceiver (), с функцией получения данных из полученных SMS:

override fun onReceive(context: Context, intent: Intent) {
    val (smsContact, smsBody) = getSMSContent(intent)

    //Do stuff with sms content here
}

fun getSMSContent(intent: Intent): Pair<String, String> {
        val data = intent.extras
        val pdusObj = data!!.get("pdus") as Array<*>
        for (i in pdusObj.indices) {
            val currentMessage = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
                Telephony.Sms.Intents.getMessagesFromIntent(intent)[0]
            else SmsMessage.createFromPdu(pdusObj[0] as ByteArray)

            // TODO: Here we get the all information about SMS.
            //Apply your conditions and logic here to filter your SMS from various SMS
            // and extract your content from message body

            val phoneNumber = currentMessage.displayOriginatingAddress
            Log.e("receiver", phoneNumber)

            val senderNum = phoneNumber
            Log.e("receiver", senderNum)

            val smsContent = currentMessage.getDisplayMessageBody()
            Log.d("receiver","Message: "+smsContent) // Always max 67 characters!

            return Pair(senderNum, smsContent)
        }
        return Pair("","")
    }

Это работает очень хорошо, за исключением того, что я не могу получить переменную "smsContent", чтобы получить все смс-сообщения. Я получаю только 67 символов из него, остальное вырезано.

Есть идеи, как и как передать все сообщение в эту строку?

Спасибо!

...