8

これは私がこれまでに持っているものですが、ダイヤラーでこの組み合わせを入力しても何も起こりません

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);
        }

    }

}
}

そしてアンドロイドマニフェストで

    <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>
4

4 に答える 4

6

これらの小さな変更を試してみてください..

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

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

Manifest.xml ファイルに次の行を追加することを忘れないでください。

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

また、これらが役立つ場合があります..

于 2013-02-06T17:58:53.543 に答える
2

受信機はブロードキャストをまったく受信していますか? そうでない場合は、PROCESS_OUTGOING_CALLS権限を含めるのを忘れている可能性があります。

于 2013-02-06T18:11:19.280 に答える
0

ridoyの2番目のリンクによると、

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

そのはず

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

それよりも

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

その変更は少なくとも私にとってはうまくいきます...

于 2016-10-20T14:54:38.117 に答える