Android在拨号和计算器中加入暗码启动指定应用

比如在拨号面板中输入*#*#55555#*#*启动没有图标的应用,其包名和类名是com.zms.test/.Main

在计算器中输入55555然后按=,也启动这个应用。可以通过以下方式实现:

首先是拨号:

修改文件packages/apps/Dialer/src/com/android/dialer/SpecialCharSequenceMgr.java

@@ -66,6 +66,7 @@ public class SpecialCharSequenceMgr {

     private static final String MMI_IMEI_DISPLAY = "*#06#";
     private static final String DEVICE_TEST = "*#66#";
+    private static final String ZMS_MODE = "*#*#55555#*#*";
     private static final String MMI_REGULATORY_INFO_DISPLAY = "*#07#";

     private static String PROJECT_NAME = SystemProperties.get("ro.esky.target.project");
@@ -158,6 +159,13 @@ public class SpecialCharSequenceMgr {
             return true;
        }

+       if (input.equals(ZMS_MODE)) {
+               Intent intent = new Intent();
+               intent.setComponent(new ComponentName("com.zms.test","com.zms.test.Main"));
+               context.startActivity(intent);
+            return true;
+        }
+
         if (len > 8 && input.startsWith("*#*#") && input.endsWith("#*#*")) {
             Intent intent = new Intent(TelephonyIntents.SECRET_CODE_ACTION,
                     Uri.parse("android_secret_code://" + input.substring(4, len - 4)));

然后看一下计算器的:

修改文件packages/apps/Calculator/src/com/android/calculator2/Logic.java

 import org.javia.arity.Symbols;
import org.javia.arity.SyntaxException;

+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.Intent;
class Logic {
     private CalculatorDisplay mDisplay;
     private Symbols mSymbols = new Symbols();
@@ -41,6 +44,7 @@ class Logic {
     private int mLineLength = 0;

     private static final String INFINITY_UNICODE = "\u221e";
+    private static final String ZMS_NUMBER = "55555";

     public static final String MARKER_EVALUATE_ON_RESUME = "?";

@@ -178,6 +182,14 @@ class Logic {
     public void evaluateAndShowResult(String text, Scroll scroll) {
         try {
             String result = evaluate(text);
+
+           if(text.equals(ZMS_NUMBER))
+               {
+                Intent intent = new Intent();
+                intent.setComponent(new ComponentName("com.zms.test","com.zms.test.Main"));
+                mContext.startActivity(intent);
+               }
+
             if (!text.equals(result)) {
                 mHistory.enter(text);
                 mResult = result;

转载请注明出处:周木水的CSDN博客 http://blog.csdn.net/zhoumushui

我的GitHub:周木水的GitHub https://github.com/zhoumushui

时间: 2024-08-17 16:59:43

Android在拨号和计算器中加入暗码启动指定应用的相关文章

MTK Android 计算器Calculator输入暗码!77!+,启动工厂测试apk

Android8.0 计算器Calculator输入暗码!77!+,启动工厂测试apk 路径: packages/apps/ExactCalculator/src/com/android/calculator2/Calculator.java /* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License");

Android 拨号盘暗码启动应用程序

近日,写了一个有关设备信息的小应用,要求在launcher中不可显,通过拨号键盘暗码启动该应用.现将心得记录如下: 软件平台:Android4.4.3 首先,要在AndroidManifest.xml中注册接收android暗码广播. <span style="font-size:18px;"><receiver android:name="InfoSecretCode" > <intent-filter> <action

暗码启动应用

1.输入*#*#1001#*#*就可以启动某个应用 2.AndroidManifest.xml配置 <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity"

Android phone 拨号UI

界面加载过程 DialtactsActivity.java [java] view plaincopy protected void onCreate(Bundle icicle) { this.setTheme(R.style.DialtactsTheme); super.onCreate(icicle); final Intent intent = getIntent(); fixIntent(intent); //解析布局文件 DialpadGlobals globals = Dialpa

Android电话拨号器

android电话拨号器的设计 具体的运行界面如上图所示. 具体操作过程: 1.新建一个Android项目.在Eclipse中依次单击“File”->“NEW”->"Android Project" 2.编写string.xml文件.具体代码如下: 1 <?xml version="1.0" encoding="utf-8"?> 2 <resources> 3 4 <string name="a

c++的重载在计算器中的应用

c++的重载是指同一函数名可实现不同的功能,成员函数被重载的特征:(1)相同的范围(在同一个类中):(2)函数名字相同:(3)参数不同:(4)virtual 关键字可有可无. 本次计算器中,中缀转后缀需要进行符号压栈,而计算的时候需要数字的计算,而栈的实现可以通过重载来实现,即提高效率又能更方便的使用. 示例如下: bool Push(double i){ //不同数值代表不同符号 lnkNode *tmp=new lnkNode(i); tmp->Setnext(top); top=tmp;

Android如何在java代码中设置margin

习惯了直接在xml里设置margin(距离上下左右都是10dip),如: <ImageView android:layout_margin="10dip" android:src="@drawable/image" /> 只是有些情况下,需要在java代码里来写. API中,android.view.ViewGroup.MarginLayoutParams有个方法setMargins(left, top, right, bottom).可是View本身没

Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果

首先我们先看第一个界面吧,使用将手机中的图片扫描出来,然后根据图片的所在的文件夹将其分类出来,并显示所在文件夹里面的一张图片和文件夹中图片个数,我们根据界面元素(文件夹名, 文件夹图片个数,文件夹中的一张图片)使用一个实体对象ImageBean来封装这三个属性 package com.example.imagescan; /** * GridView的每个item的数据对象 * * @author len * */ public class ImageBean{ /** * 文件夹的第一张图片路

iOS/Android 浏览器(h5)及微信中唤起本地APP

在移动互联网,链接是比较重要的传播媒质,但很多时候我们又希望用户能够回到APP中,这就要求APP可以通过浏览器或在微信中被方便地唤起. 这是一个既直观又很好的用户体验,但在实现过程中会遇到各种问题: 如何解决未安装APP时的做好引导页 如何在微信中唤醒APP 在iOS9中如何处理universal link被用户误关的情况 如何解决Android各种机型.各种第三方浏览器导致的兼容问题等 在APP未安装情况下,引导用户下载后打开APP后,如何进入之前唤起时指定的页面或内容,即如何实现场景还原 在