0
我有一个接收短信(通过BroadCastReceiver)并开始处理传入短信的活动(包括播放声音以通知用户,更新数据库并向用户显示消息)。在手机睡着时获取短信
问题是,有时候,该应用程序没有运行,手机在睡梦中,我什么都没收到,但只要我解锁屏幕,我就收到了4条或5条消息!
编辑:广播接收器的 定义:从广播接收器
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ...
handleNewMessage(this.getIntent());
}
@Override
public void onNewIntent (Intent intent) {
super.onNewIntent(intent);
handleNewMessage(intent);
}
开始MyActivity:
<activity
android:name=".MyActivity"
android:launchMode="singleInstance">
</activity>
内活动:我的活动
<receiver
android:name=".util.sms.SmsReceiver"
android:enabled="true" >
<intent-filter android:priority="999" >
<action android:name="android.intent.action.DATA_SMS_RECEIVED" />
<data android:scheme="sms" />
<data android:port="56790" />
</intent-filter>
</receiver>
定义
@Override
public void onReceive(Context context, Intent intent) {
//...
if(smsIsMine()) {
Intent intent = new Intent();
intent.putExtra("MESSAGE_BODY", sms.getBody());
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClass(context, MyActivity.class);
context.startActivity(intent);
}
}
任何想法?
我这样做,我测试请你给我更多的细节,这将如何解决这个问题 –
我需要什么?我假设你是从一个活动中注册你的接收者,当你这样做时,广播接收者在活动关闭或进入onPause状态时立即取消注册,当你在清单中注册时,不管的应用程序状态(打开,关闭,在后台)广播接收器收到意图并执行BroadcastReceiver的onReceive()。 – drulabs
我在清单中注册接收器(就像你),几乎所有的时间都可以。但有时候我会解释一些事情,我认为Android本身有些问题,比如在空闲模式下睡了一段时间。 –