【发布时间】:2022-06-15 16:15:16
【问题描述】:
在 BroadcastReceiver 我想从默认的移动应用程序接收短信。
但是当用户在没有互联网连接的情况下发送短信时我会收到,但是当用户(通过 wifi 或移动网络发送短信)我无法阅读消息。
public class MessageReciver extends BroadcastReceiver {
private static MessageListener mListener;
public static final String reciveSMS="android.provider.Telephony.SMS_RECEIVED";
public static final String TAG ="SmsBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.i("fsdfdsfdsfdgfdsg "," rerwerw");
if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
Bundle data = intent.getExtras();
Object[] pdus = (Object[]) data.get("pdus");
String formate = data.getString("format");
for (int i = 0; i < pdus.length; i++) {
SmsMessage smsMessage = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M)
{
smsMessage = SmsMessage.createFromPdu((byte[]) pdus[i], formate);
} else {
smsMessage = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
String message = smsMessage.getMessageBody();
Toast.makeText(context, "Message Received: " + message, Toast.LENGTH_SHORT).show();
}
}
}
}
我不明白为什么我会遇到这个问题,因为广播接收器可以发送或接收来自 Android 系统和其他 Android 应用程序的广播消息。它只接收(不使用互联网的短信),但每个移动消息应用程序都有默认启用选项(在可用时使用 wifi 或数据进行消息传递)。
请任何人帮助从默认移动消息应用程序接收短信
【问题讨论】:
-
我不确定我是否完全理解您的要求,但您的应用仅适用于 SMS。它不适用于 MMS、RCS 或您的实际消息传递应用程序可以处理的任何其他类型的消息。您确定您丢失的消息是短信吗?如今,大多数消息传递应用程序很少一直使用 SMS,但这些是您唯一可以访问的。如果不是他们的主要 SMS 应用程序,因此您无法真正监视用户的消息,因此是一个成熟的消息客户端。
标签: java android broadcastreceiver sms smsmanager