Is it possible to define a broadcast receiver as an inner class in manifest file?

danizmax picture danizmax · Dec 8, 2010 · Viewed 30.4k times · Source

I want to create a broadcast receiver as an inner class in my main activity. But I have problems defining the broadcast receiver in manifest xml file, because android can't find it.

Code:

public class MyActivity extends Activity{
    ...

    public class Receiver extends BroadcastReceiver{

        @Override
        public void onReceive(Context context, Intent intent) {
            ....
        }

    }

    ...
}

Manifest:

<receiver android:name=".org.danizmax.myapp.MyActivity$Receiver" android:enabled="true">
            <intent-filter>
                <action android:name="org.danizmax.myapp.BROADCAST_INITIAL_DATA"></action>
            </intent-filter>
</receiver>

I tried with:

  • .org.danizmax.myapp.MyActivity$Receiver
  • org.danizmax.myapp.MyActivity$Receiver
  • .MyActivity$Receiver
  • .Receiver

I saw others also having similar problems, but did not find any answers.

So is it possible? If not, what's better way to use broadcast receivers?

Thanks!

Answer

Cheryl Simon picture Cheryl Simon · Dec 8, 2010

Yes, it is possible.

The receiver android:name attribute should look like .path.to.class.MyClass$MyInnerClass