android - 未注册内部类的广播接收器

标签 android android-intent

我已经搜索了又搜索,并且尝试了我能想到的所有方法五次。我无法让我的广播接收器注册。

目前,在 list 中的应用程序元素中,我有:

<receiver android:name=".MainActivity$browserReceiver"
    android:enabled="true" >
    <intent-filter>
        <action android:name="com.mycompany.snapbench.browsertest" />
    </intent-filter>
</receiver>

在我的 MainActivity 类中:

public static BrowserReceiver browserReceiver;

MainActivity->onCreate:

browserReceiver = new BrowserReceiver();

最后,在 MainActivity 类的末尾:

public class BrowserReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.e("Receiver", "I'm pretty sick of this.");
    }
}

当我按下应用程序中的按钮时,我会运行此命令作为测试:

if (isIntentAvailable(this, "com.mycompany.snapbench.browsertest")) {
    Log.e("Intent", "It is there.");
} else {
    Log.e("Intent", "FAIL");
}

当然,我在 LogCat 中总是得到“FAIL”。我做错了什么?

最佳答案

刚刚测试了两种方法,效果都很好。对于这两者,我在名为 ContactManager 的 Activity 中实现了一个类 SmsReceiver:

public static class SmsReceiver extends BroadcastReceiver {

    private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";

    @Override
    public void onReceive(final Context context, final Intent intent) {     
        if (intent != null && SMS_RECEIVED.equals(intent.getAction())) {
            Log.d("TAG", "SMS received in inner class");
        }
    }
}
  1. 首先我在 onCreate() 方法中注册了接收器:

    IntentFilter filter = new IntentFilter(SmsReceiver.SMS_RECEIVED);
    BroadcastReceiver receiver = new SmsReceiver();
    registerReceiver(receiver, filter);
    

    实际上,最好在 onResume() 中注册它,并在 onPause() 中注销它。

  2. 其次,我删除了注册码并将接收器添加到 list 中:

两种解决方案都运行得很好,并打印了在内部类中收到的短信。据我所知,您没有声明您的内部类static。这可能就是错误所在。所以只需将其更改为:

public static class BrowserReceiver extends BroadcastReceiver {
    ...
}

希望这有帮助......干杯!

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

相关文章:

android - javaMaxHeapSize 与安卓 :largeHeap

Android SDK 平台工具无法在 Debian 7 上安装

javascript - 如何通过 Javascript 从我的 ionic 应用程序启动 Google Maps Intent API

android - ACTION_BOOT_COMPLETED 有什么替代方案吗?手机开机后,我需要尽快提供 Intent/操作(/解决方法)

java - Android - 从Webview拦截链接

android - RecognitionListener.onReadyForSpeech() 中的 DTMF 音被误认为是语音

android - 搜索 View : when click Done button nothing happens

Android Studio 自上次更新到 0.8 版本后出现的问题

Android Intent putExtra(String, Serializable)

android - FLAG_ACTIVITY_CLEAR_TOP 没有按预期工作