Android: are context-registered broadcast receivers exported?

android, android-broadcast, broadcastreceiver

Solution

From the api docs on the BroadcastReceiver API:

If you don't need to send broadcasts across applications, consider using this class with LocalBroadcastManager instead of the more general facilities described below. This will give you a much more efficient implementation (no cross-process communication needed) and allow you to avoid thinking about any security issues related to other applications being able to receive or send your broadcasts.

That way at least you can keep the receiver only inside your application.

Problem

If I register a broadcast receiver say in my activity like this, ``` @Override protected void onResume() { super.onResume(); myReceiver = new BroadcastReceiver() { ... }; IntentFilter filter = new IntentFilter("com.example.MY_ACTION"); registerReceiver(myReceiver, filter); } ``` Is this receiver exported? if another app broadcasts `com.example.MY_ACTION`, will it be received by `myReceiver`? If it is, I assume I need to use the form of `registerReceiver()` that accepts a string permission, and then define that permission in my manifest, giving it a high protection level (such as signature). Is that correct? Is there a simpler way?

Original source

Related problems