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本身有些問題,比如在空閒模式下睡了一段時間。 –