android - 在服务中注册广播接收器

标签 android broadcastreceiver android-service

我有一个 Activity,这个 Activity 将调用一个 Service,而该 Service 将调用一个广播来监听即将到来的 SMS。我在服务中动态注册了一个广播。
但它不起作用。我的代码如下。请帮我解决。 这是服务中的 onCreate 方法。

@Override
public void onCreate() {
    super.onCreate();
    final IntentFilter filter = new IntentFilter();
    filter.addAction("android.provider.Telephony.SMS_RECEIVED");

    this.registerReceiver(new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            showSuccessfulBroadcast();

        }
    }, filter);
}

最佳答案

代码是正确的。不要忘记在 AndroidManifest.xml 中声明已使用的权限,并在 onDestroy() 中注销接收器。这两点都很重要。

<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> 

在你的服务中

private BroadcastReceiver mSmsBroadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        showSuccessfulBroadcast();
    }
};

@Override
public void onCreate() {
    super.onCreate();
    final IntentFilter filter = new IntentFilter();
    filter.addAction("android.provider.Telephony.SMS_RECEIVED");

    this.registerReceiver(mSmsBroadcastReceiver, filter);
}

@Override
public void onDestroy() {
    this.unregisterReceiver(mSmsBroadcastReceiver);
}

关于android - 在服务中注册广播接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31470806/

相关文章:

android - 动态更新android应用程序 Activity 之间的数据

Android 多次通知

background - Whatsapp 或电报等应用程序如何监听 Android 上的来电/消息事件?

带有 Camera API 的 Android 模拟器

android - 如何使用 "su"在运行时发送命令并从 DataInputStream 获取所有行

android - 接收广播 Intent 时出错 { act=android.location.PROVIDERS_CHANGED flg=0x10 }

安卓服务无法启动

Android Pie (9.0) WebView 多进程

android - openGLES 骨骼动画解决方案的方法

android - Google App Engine 版本 URL 和应用版本控制