Java 安卓从拨号器启动应用程序

Java 安卓从拨号器启动应用程序,java,android,broadcastreceiver,android-dialer,Java,Android,Broadcastreceiver,Android 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)) {

这是我到目前为止,但并没有发生什么,当我输入拨号组合

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>

试试这些小改动

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"/>

你也会发现这些方法很有用


接收器是否接收到广播?如果没有,可能是您忘记了包含许可。

根据ridoy的第二个链接

应该是

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

String phoneNumber = intent.getExtras.getString("Intent.EXTRA_PHONE_NUMBER");
这种改变至少对我有效…

试试这个

将此添加到清单中, 这里的主机是12456,所以您的密码是
*.*.\123456.*.*.
(拨入)


android.intent不存在String phoneNumber=intent.getExtras.getString(“intent.EXTRA\u PHONE\u NUMBER”);您必须更改为:String phoneNumber=intent.getExtras.getString(intent.EXTRA\u PHONE\u NUMBER);它根本没有得到广播,我添加了许可,但仍然没有
<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>
 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);
    }
}