广播接收器无法接收来自移动默认消息包应用程序的消息为什么



在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();
}
}
}

}

我不明白为什么我会面临这个问题,因为广播接收器可以从安卓系统和其他安卓应用程序发送或接收广播消息。它只接收(短信而不使用互联网(,但每个移动消息应用程序都有默认的启用选项(使用wifi或数据发送消息时可用(。

任何人请帮助从默认的移动消息应用程序接收短信

已经注册了接收器吗?

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

registerReceiver(messageReciver , new  IntentFilter(YOUR FILTER));
}

试试这个

AndroidManifest.xml

<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<application>
// add this
<receiver android:name=".MessageReciver">
<intent-filter android:priority="1">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>

主要活动.java

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if ( ContextCompat.checkSelfPermission(
this,
Manifest.permission.RECEIVE_SMS
) != PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(this, new String[]{ Manifest.permission.RECEIVE_SMS}, 1);
}
}

这是真的,因为前一个月我也遇到了同样的问题。如果wifi关闭且LTE关闭,则通过广播接收器意图识别SMS_received或wap_push_received来广播MMS和SMS动作。

在新的智能手机中,这些消息用绿色标记。

但如果发件人的手机打开wifi或LTE数据模式,那么就会发生糟糕的事情。

这些通过wifi或LTE的短信或mms现在是CHAT消息。sms_received或wap_push_received不会广播这些聊天消息。这些CHAT信息在现代手机上用蓝色标记。如果你试图在关闭wifi或LTE的情况下向智能手机发送信息(短信或彩信(,你会被告知,现在你的信息将只能作为普通短信或彩信发送。

您可以通过contentresolver找到这些CHAT消息content://im/chat

不幸的是,我还不知道如何接收广播聊天信息。现在,我每隔1秒钟就提取一次新聊天消息的内容解析程序。

最新更新