Android Calculator2源碼分析與修改

來源:互聯網
上載者:User

標籤:android   calculator   源碼分析   修改   暗碼啟動   

將Android 4.4.4的計算機Calculator移植出來,可以獨立的在Android Studio中使用。完整的代碼已經推到我的GitHub,連結在文末。
下面看一下:

這是在三星手機上的效果,和我之前在Nexus上用的計算機UI一樣,原生的。當然有了源碼,我們就可以定製自己想要的效果了。
代碼可以去我的GitHub查看。

在Dialer和Calculator中加入暗碼啟動指定應用

比如在撥號面板中輸入##55555##啟動沒有表徵圖的應用,其包名和類名是com.zms.test/.Main
在計算機中輸入55555然後按=,也啟動這個應用。可以通過以下方式實現:

首先看一下計算機的,修改檔案:
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;

然後是撥號,我就不獨立出來了,也寫在這篇吧,修改檔案:
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)));

轉載請註明出處:周木水的CSDN部落格 http://blog.csdn.net/zhoumushui
我的GitHub:周木水的GitHub https://github.com/zhoumushui

Android Calculator2源碼分析與修改

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.