将 SMS 从 BroadcastReceiver 传递到 Activity

Pass SMS from BroadcastReceiver to Activity

我正在创建一个短信应用程序。我可以很好地发送消息,但是我无法接收它。我已经成功实现了允许该应用程序被选为设备上的默认 SMS 应用程序的功能。

我遇到的问题是无法将 SMS 从 BroadcastReceiver 传递到显示消息的 Activity。我知道可以对消息使用 intent.putExtra(),然后使用 startActivity(),但是如果在收到消息时 activity 已经启动,会发生什么情况?我不想在每次收到新消息时都重新启动 activity。

给那只猫剥皮的方法很少,一种方法是在Activity里面放一个接收器,像这样

    void onResume(){
        super.onResume();
        IntentFilter filter = new IntentFilter();
        filter.addAction("android.provider.Telephony.SMS_RECEIVED");
        registerReceiver(mSmsReceiver, filter);
    }

    void onPause(){
        super.onPause();
        unregisterReceiver(mSmsReceiver);
    }

    private BroadcastReceiver mSmsReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
       //Do you stufff
    }
};