我想开发没有图标启动器的应用。该应用程序将运行alarmcheduler,该安装程序在安装应用程序或重新启动手机时触发。
问题是如何打开活动,因为应用程序没有像下面那样的意图过滤器:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
有没有办法处理拨号代码,例如##4635 *#*#来打开活动? 或欢迎任何其他解决方案。
答案 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##
。但你需要按通话键。