【问题标题】:Broadcast Receiver Not receive messages from Mobile default messags application Why?Broadcast Receiver 不接收来自 Mobile 默认消息应用程序的消息 为什么?
【发布时间】: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


【解决方案1】:

已经注册您的接收器了吗?

@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>

MainActivity.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);
    }
}

【讨论】:

  • 不,我试试这个,但我有同样的问题
  • 嘿,我已经编辑了我的 Q 请再次查看。
  • 我编辑了我的答案,请再试一次。
【解决方案2】:

消息中的新聊天功能(来自 Google 的 Jibe Mobile)

jibe Mobile 通过 Wi-Fi 和移动数据发送消息,而不是 SMS 或 MMS

请检查此详细信息可能会有所帮助

https://support.google.com/messages/answer/7189714?hl=en

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    相关资源
    最近更新 更多