按下后退按钮时Android广播接收器无法接收

时间:2013-03-20 09:24:16

标签: android sms broadcastreceiver

我想通过后退按钮最小化我的应用程序时收到短信,当我通过主页按钮最小化然后它接收短信,但是当按下按钮然后没有收到广播消息。 感谢。

我的应用代码是:

    @Override
protected void onResume() {
    super.onResume();

    registerReceiver(receiver, filter);
}

 @Override
 protected void onPause() {
 super.onPause();
 unregisterReceiver(receiver);
 }

    @Override
public void onReceive(Context context, Intent intent) {
    String address = "";
    String message = "";
    Bundle extras = intent.getExtras();
    if (extras != null) {
        Object[] smsExtra = (Object[]) extras.get("pdus");

        for (int i = 0; i < smsExtra.length; i++) {
            SmsMessage sms = SmsMessage.createFromPdu((byte[]) smsExtra[i]);
            message += sms.getMessageBody();
            address = sms.getOriginatingAddress();
        }
        Toast.makeText(context, "SMS Received>>" + message +"From >>" + address,
                Toast.LENGTH_LONG).show();
    }

那么如何通过后退按钮最小化时收到短信感谢。

2 个答案:

答案 0 :(得分:2)

当用户显然不能正常工作时,您取消注册广播接收器。而不是在应用程序级别注册,在清单中注册它。这样它就不依赖于应用程序的状态。

要了解更多信息: http://developer.android.com/reference/android/content/BroadcastReceiver.html

答案 1 :(得分:2)

我是以一种小巧的方式做到的...... 我确实喜欢这个。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        // Display confirmation here, finish() activity.
        Intent startMain = new Intent(Intent.ACTION_MAIN);
        startMain.addCategory(Intent.CATEGORY_HOME);
        startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(startMain);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}