Android – 广播接收器未被解雇

我知道这已经被问到了ALOT,但是我一直在搜索互联网几个小时,我甚至重复使用了我以前的一些代码来接收短信,我得到了……没什么。

所以,这里是基本应用程序接收短信但应用程序永远不会收到意图。 如果文本是从同一部手机发送的,我认为意图可能会被忽略,但似乎并非如此,因为其他应用程序可以正常收听文本。

这是我的清单:

                  

而且,这里是接收器,这里似乎没什么新东西,所以我不知道问题是什么:

 package com.encima.smsreceiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsMessage; import android.util.Log; import android.widget.Toast; public class MessageReceiver extends BroadcastReceiver { private static final String TAG = "Message recieved"; @Override public void onReceive(Context context, Intent intent) { Bundle pudsBundle = intent.getExtras(); Object[] pdus = (Object[]) pudsBundle.get("pdus"); SmsMessage messages =SmsMessage.createFromPdu((byte[]) pdus[0]); Log.i(TAG, messages.getMessageBody()); Toast.makeText(context, "SMS Received : "+messages.getMessageBody(), Toast.LENGTH_LONG).show(); } } 

我正在使用的调试手机正在运行2.2.2我运行的其他应用程序检测短信,包括我自己的一些。

对此有任何见解将不胜感激!

谢谢

由于SMS广播意图由Context.sendOrderedBroadcast(…)发送,如果任何其他应用注册BroadcastReceiver并调用abortBroadcast,则另一个接收器将不会获得广播。

要增加应用程序接收广播的概率,请创建一个IntentFilter,使用IntentFilter.setPriority 。

我不知道这是不是你的问题,但你应该定义试试这个:

而不是".MessageReceiver"android:name = "com.encima.smsreceiver.MessageReceiver"

当有些东西没有被调用时,这可以解决我多次锻炼的问题。