0

This should be fairly easy but I somehow can't get a Broadcast receiver's onReceive method triggered. Details below:

App B provides a broadcast receiver. Manifest:

<receiver android:name=".MyNotificationReceiver">
            <intent-filter>
                <action android:name="com.go.foo.A_ACTION" />
            </intent-filter>
        </receiver>

Java:

public class MyNotificationReceiver extends BroadcastReceiver {

    private final String TAG= "MyNotificationReceiver";

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "this is not shown"     , Toast.LENGTH_LONG).show();
    }
}

App A is Broadcast Sender App:

Java

            Intent intent = new Intent();
            intent.setAction("com.go.foo.A_ACTION");
            sendBroadcast(intent);
            Log.d(TAG, "broadcast intent sent...");

I can see the log statement that the broadcast is sent but the receiver's onReceive() callback is not getting triggered. Am I doing something wrong?

Sai
  • 2,089
  • 3
  • 19
  • 30

2 Answers2

0

Interesting why it's not working. Try this one out. I know the default values of exported and enabled are true. But still have a try at it.

<receiver android:name=".MyNotificationReceiver" android:enabled="true" android:exported="true">
    <intent-filter>
        <action android:name="com.go.foo.A_ACTION" />
    </intent-filter>
</receiver>
Henry
  • 17,490
  • 7
  • 63
  • 98
  • I tried setting android:enabled="true" android:exported="true" in AndroidManifest.xml but still the onReceive() callback is not getting triggered. – Sai Oct 25 '15 at 16:23
0

Learned something new today. As of Android 4.1, the system no longer sends broadcasts to app components without an activity. The broadcast received started working after I added an activity in the manifest.

Sai
  • 2,089
  • 3
  • 19
  • 30