3

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

我的应用程序代码是:

    @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();
    }

所以当我通过后退按钮最小化时如何接收短信谢谢。

4

2 回答 2

3

我以一种小技巧的方式做到了,就像这样。

@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);
}
于 2013-03-20T14:06:56.287 回答
2

当用户离开时,您正在注销广播接收器,显然它不起作用。与其在应用级别注册,不如在清单中注册。这样它不依赖于应用程序的状态。

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

于 2013-03-20T09:25:32.647 回答