我的项目很简单。它有一个 activity
和一个 broadcast receiver
。在我的应用程序中,我希望能够发送短信和接收短信。这很好用。
但现在我想将一些数据从 View 传递到接收器。想象一个简单的复选框
,我想将它的值传递给receiver
。
所以这是我的应用程序的基本生命周期:
- 启动应用
- 点击发送短信
- 接收器以参数启动并发送短信
- 接收者收到一条短信并停止。
接收者:
<receiver android:name=".SmsReceiver">
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
我试图传递一个值,但它似乎被忽略了。有什么想法吗?
最佳答案
- 您不能随心所欲地启动和停止
BroadcastReceiver
。BroadcastReceiver
仅在onReceive()
执行时有效。 - 要发送广播,您应该使用
sendBroadcast(this.service)
而不是startService(this.service);
- 将其更改为
sendBroadcast(this.service)
后,您将收到两次 广播(第一次来自您的sendBroadcast()
,第二次来自短信管理器
)。这绝对不是您想要的,因为在第一种情况下,您将能够获得checked
参数,但不能获得SmsMessage
,在第二种情况下反之亦然。 - 您可以将此
checked
参数存储在SharedPreferences
中,然后在onReceive()
上检索它
关于android - 手动启动/停止接收器并将参数传递给接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14211291/