【问题标题】:Android. Launch app from Dialer安卓。从拨号器启动应用程序
【发布时间】:2013-02-06 16:27:23
【问题描述】:

这是我目前所拥有的,但是当我在拨号器中输入这个组合时没有任何反应

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

    }

}
}

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

【问题讨论】:

    标签: java android broadcastreceiver android-dialer


    【解决方案1】:

    试试这些小改动..

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

    您也可能会发现这些有用..

    【讨论】:

    • android.intent 不存在
    • Not String phoneNumber = intent.getExtras.getString("Intent.EXTRA_PHONE_NUMBER");您必须更改为:String phoneNumber = intent.getExtras.getString(Intent.EXTRA_PHONE_NUMBER);
    【解决方案2】:

    接收者是否收到广播?如果没有,可能您忘记包含PROCESS_OUTGOING_CALLS 权限。

    【讨论】:

    • 它根本没有广播,我添加了权限但仍然没有
    【解决方案3】:

    试试这个,

    在清单中添加这个, 这里主机是 12456,所以你的密码是*#*#123456#*#*(拨入拨号)

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

    【讨论】:

      【解决方案4】:

      根据ridoy的第二个链接,

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

      这种改变至少对我有用...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-28
        • 1970-01-01
        • 2016-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多