8

This is what I have so far but nothing happens when I input this combination in dialer

public class DialReceiver extends BroadcastReceiver
{
    @Override
  public void onReceive(Context context, final Intent intent) {

    if (intent.getAction().equals(android.content.Intent.ACTION_NEW_OUTGOING_CALL)) {
        String phoneNumber = intent.getExtras().getString( android.content.Intent.EXTRA_PHONE_NUMBER );

        if(phoneNumber.equals("*#588637#")) { 
            Intent intent1 = new Intent(context , Activity.class);
            intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK );
            context.startActivity(intent1);
        }

    }

}
}

and in androidmanifest

    <receiver
        android:name=".receiver.DialReceiver"
        android:exported="true"
        android:process=":background"
        tools:ignore="ExportedReceiver" >
        <intent-filter>
            <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>
Plo_Koon
  • 2,953
  • 3
  • 34
  • 41
pedja
  • 3,285
  • 5
  • 36
  • 48

4 Answers4

6

Try with these small changes..

String phoneNumber = intent.getExtras.getString("Intent.EXTRA_PHONE_NUMBER");

             if(phoneNumber.equals("*#588637#")) { 
             //do your stuff
             }

And do not forget to add this line in your Manifest.xml file

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

Also you may find these helpful..

thechaoticpanda
  • 396
  • 2
  • 18
ridoy
  • 6,274
  • 2
  • 29
  • 60
  • android.intent doesnt exists – pedja Feb 06 '13 at 19:14
  • 1
    Not String phoneNumber = intent.getExtras.getString("Intent.EXTRA_PHONE_NUMBER"); u must change to: String phoneNumber = intent.getExtras.getString(Intent.EXTRA_PHONE_NUMBER); – Tapa Save Feb 24 '16 at 14:40
2

Is the receiver getting the broadcast at all? If not, maybe you forgot to include the PROCESS_OUTGOING_CALLS permission.

Ken Fehling
  • 2,051
  • 23
  • 32
2

Try This,

Add to this in manifest, here host is 12456, so your secret code is *#*#123456#*#* (dial-in dialped)

<receiver android:name=".Dialer"> //here is your broadcast receiver class
        <intent-filter>
            <action android:name="android.provider.Telephony.SECRET_CODE" />
            <data android:scheme="android_secret_code"
                  android:host="123456"
            />
        </intent-filter>
    </receiver>

here is your Broadcast Receiver class :

 class Dialer : BroadcastReceiver() {

    override fun onReceive(context: Context?, intent: Intent?) {
         // Declare Here your launcher activity in Intent
        var  i : Intent = Intent(context, MainActivity::class.java)  
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context!!.startActivity(i);
    }
}
Ronak Ukani
  • 603
  • 5
  • 20
0

According to ridoy's 2nd link,

http://tikuflower.blogspot.com/2011/12/android.html

It should be

String phoneNumber = intent.getStringExtra("android.intent.extra.PHONE_NUMBER");

rather than

String phoneNumber = intent.getExtras.getString("Intent.EXTRA_PHONE_NUMBER");

That change works for me at least...

rrforshort
  • 11
  • 1
  • 4