¿Cómo detectar llamadas entrantes con la ayuda de Broadcast Receiver?

Estoy tratando de reconocer las llamadas entrantes a través de un receptor de difusión. Soy incapaz de hacerlo! De hecho, no puedo 'disparar' la transmisión!

Aquí está mi código:

activate.setOnClickListener(new OnClickListener()
        {

            @Override
            public void onClick(View v)
            {
                Toast.makeText(getApplicationContext(),"Clicked",1).show();
                final String BROADCAST_ACTION_NAME = ".BroadcastMM";
                Intent intent = new Intent();  
                intent.setAction(BROADCAST_ACTION_NAME);        
                sendBroadcast(intent); 


            }                                           
            }

No sé si este 'sendBroadcast' se activa alguna vez! En mi archivo de Broadcast Receiver:

public void onReceive(Context context, Intent intent)
    {
        if(intent.getAction()=="android.intent.action.PHONE_STATE"){
        Toast.makeText(c,"BroadCast fired!",1).show();}
        Bundle extras = intent.getExtras();
        String state = extras.getString(TelephonyManager.EXTRA_STATE);
        if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
            Toast.makeText(context, "Ringing", 1).show();
        }
}       

Mi archivo de manifiesto:

<receiver android:name=".BroadcastMM" >
            <intent-filter>
                <action android:name="android.intent.action.PHONE_STATE" >
                </action>
            </intent-filter>
        </receiver>

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

¿Hay alguna lógica que me falta? Soy muy nuevo en Android, así que por favor ayudenme.

Respuestas a la pregunta(1)

Su respuesta a la pregunta