我有一个应用程序接收短信(通过 BroadCastReceiver)并启动一个 Activity 来处理传入的短信(包括播放声音以通知用户、更新数据库和向用户显示消息)。
问题是有时该应用程序没有运行并且手机处于睡眠状态,我什么也没有收到,但一旦我解锁屏幕,我就会收到 4 或 5 条消息!
编辑:广播接收器的定义:
<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>
我的活动的定义:
<activity
android:name=".MyActivity"
android:launchMode="singleInstance">
</activity>
内部活动:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ...
handleNewMessage(this.getIntent());
}
@Override
public void onNewIntent (Intent intent) {
super.onNewIntent(intent);
handleNewMessage(intent);
}
从 BroadcastReceiver 启动 MyActivity:
@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);
}
}
任何想法?