[英]Android Telephony SMS Receiver not working
I am developing an app that listens for specific SMS notification and later generates some analytics data on it. 我正在开发一个应用程序,用于侦听特定的SMS通知,然后在其上生成一些分析数据。 I was not able to catch any incoming SMS messages, please help if I have missed something or have done something wrong
我无法收到任何传入的短信,如果我遗漏了某些内容或做错了什么,请提供帮助
Manifest File 清单文件
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<receiver android:name=".SmsReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
SmsReceiver class SmsReceiver类
package com.example.sms_project;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.provider.Telephony;
import android.widget.Toast;
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Telephony.Sms.Intents.SMS_RECEIVED_ACTION.equals(intent.getAction())) {
Toast.makeText(context, "Message received from SMS", Toast.LENGTH_SHORT).show();
}
}
}
Any SMS that is received does not trigger the Toast, please help 收到的任何短信都不会触发Toast,请提供帮助
You shuoud add to manifiest this permission <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
and if still not working try this code: 你shuoud添加到最明显的这个权限
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
如果仍然无法正常运行,请尝试以下代码:
class SMSBroadcastReceiver : BroadcastReceiver() {
var listenerSMS: ((String, String) -> Unit)? = null
fun setOnIncomeSmsDetectListener(f: ((String, String) -> Unit)) {
listenerSMS = f
}
val sms = SmsManager.getDefault()
override fun onReceive(context: Context?, intent: Intent?) {
val bundle = intent?.extras
try {
if (bundle != null) {
val pdusObj = bundle.get("pdus") as Array<*>
for (i in pdusObj.indices) {
val currentMessage = SmsMessage.createFromPdu(pdusObj[i] as ByteArray)
val phoneNumber = currentMessage.getDisplayOriginatingAddress()
val message = currentMessage.getDisplayMessageBody()
listenerSMS?.invoke(phoneNumber, message)
Log.i("SmsReceiver", "senderNum: $phoneNumber; message: $message")
}
}
} catch (e: Exception) {
Log.e("SmsReceiver", "Exception smsReceiver$e")
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.