【发布时间】:2011-12-25 08:49:54
【问题描述】:
我有一个应用程序尝试从特定发件人那里捕获 SMS 消息,然后开始一个新活动。当使用 Debug As 在 Eclipse 中运行并使用我的 BroadcastReceiver 模拟器时,它工作得很好,它按预期命中断点。当我在 Eclipse 中使用 Run As 在模拟器中启动时,SMS 消息永远不会被捕获。由于缺少日志输出,似乎从未调用过 BroadcastReceiver。在我的手机上运行时,短信也不会被捕获。任何想法为什么它以一种方式工作而不是另一种?
我的手机上只有很少的应用程序,我所知道的唯一一个可以捕捉短信的是内置的信使。
<receiver android:name=".sms.ConfirmationResponder">
<intent-filter android:priority="100">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
...
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
接收者:
public class ConfirmationResponder extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Log.i("SMS", "############################ Confirmation being read");
// More stuff after this but I don't even get the log message
}
}
【问题讨论】:
-
如何在发布和调试模式下构建?
-
我只是在模拟器和手机上使用 Eclipse 中的运行命令。
-
因此,您是指模拟器中的调试模式和真机中的发布模式?也许,在真正的手机上,您已经订购了 SMS 接收的意图,而标准接收器具有更高的优先级。尝试增加优先级(将其设置为 999)。也许这会有所帮助。
-
我的意思是在 Eclipse 中同时运行调试和运行。当我执行 Debug As... 时,它会调用接收器。当我运行时......它没有。将澄清我的帖子。尝试增加优先级无济于事。内置的 Messenger 应用在处理短信后会停止广播吗?
-
根据我的经验 - 不。但我想,也许你在真实设备上运行你的应用程序,可能会有一些特殊性。
标签: android sms broadcastreceiver