使用拨号代码打开活动

时间:2015-09-24 12:06:24

标签: android

我想开发没有图标启动器的应用。该应用程序将运行alarmcheduler,该安装程序在安装应用程序或重新启动手机时触发。

问题是如何打开活动,因为应用程序没有像下面那样的意图过滤器:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

有没有办法处理拨号代码,例如#4635 *#*#来打开活动? 或欢迎任何其他解决方案。

2 个答案:

答案 0 :(得分:0)

您必须使用广播接收器...

public class OutgoingCallReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
            Bundle bundle = intent.getExtras();

            if(null == bundle)
                    return;

            String phonenumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);

            Log.i("OutgoingCallReceiver",phonenumber);
            Log.i("OutgoingCallReceiver",bundle.toString());

            if(code.equals("#056700") {
 intent.setComponent(new ComponentName("com.example", "com.example.yourActivity"));

和你的Android Manifest

<receiver android:name="com.varma.samples.detectcalls.receivers.OutgoingCallReceiver"> 
   <intent-filter> 
   <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
   </intent-filter> 
</receiver>

另外,请包含权限:

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

答案 1 :(得分:0)

您可以通过两种方式实现:

1)作为@KishuDroid的回答

2)通过在manifest

中定义代码
    public class MySecretCodeReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals("android.provider.Telephony.SECRET_CODE")) {
            Intent i = new Intent(context, MainActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
        }
    }

}

在清单文件

<receiver android:name=".MySecretCodeReceiver">
    <intent-filter>
        <action android:name="android.provider.Telephony.SECRET_CODE" />
        <data android:scheme="android_secret_code" android:host="4635" />
</intent-filter>
</receiver>

注意:

在第二种方法中,您必须拨打*#*#your_code#*#*并且不需要按通话按钮

但在第一种方法中,您可以自定义代码的前缀或后缀。例如*#your_code#**your_code##。但你需要按通话键。