Android 使用暗码启动App
Posted 雪山Li
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 使用暗码启动App相关的知识,希望对你有一定的参考价值。
android 使用暗码启动App
暗码,比如*#06#查看手机IMEI号。*#06#就是一个暗码。
我们可能有时会有这样的需求,比如我想通过手机拨号来启动一个内置无界面的app(假设拨*#*#6636#*#*),那该如何实现?
既然暗码是点击拨号按钮启动的,那么肯定是在源码Dialer 中通过全局广播形式发给其他内置app的,废话不多说,进入Dialer 源码看看就 明白了
系统源码中可以体现出来: \\android\\packages\\apps\\Dialer\\ src\\com\\android\\dialer\\dialpad\\DialpadFragment.java a .拨号盘的输入内容处理是在 DialpadFragment.java 的public void afterTextChanged(Editable input) 方法中 b.在fterTextChanged(Editable input) 方法中 会调用 SpecialCharSequenceMgr.handleChars(getActivity(), input.toString(), mDigits)) c.在 handleChars方法中会对暗码及PIN码进行处理 代码如下: public static boolean handleChars(Context context, String input, EditText textField) //get rid of the separators so that the string gets parsed correctly String dialString = PhoneNumberUtils.stripSeparators(input); if (handleDeviceIdDisplay(context, dialString) || handleRegulatoryInfoDisplay(context, dialString) || handlePinEntry(context, dialString) || handleSecretCode(context, dialString)) return true; return false; d. \\android\\packages\\apps\\Dialer\\src\\com\\android\\dialer\\SpecialCharSequenceMgr.java 看到 SECRET_CODE_ACTION 是从handleSecretCode这里发出来的
暗码的发送已讲完,下来看看接收。其实很简单就是静态注册广播,接收,启动App主界面即可
2. 需要启动APP操作:
a. (AndroidManifest.xml里面静态注册就是)。
b. 新增加TestSercretReceiver类,代码如下:
import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.util.Log; public class TestSecretReceiver extends BroadcastReceiver private String TAG = "RuntimeSecretReceiver"; private static final String SECRET_CODE_ACTION = "android.provider.Telephony.SECRET_CODE"; private final Uri mUri = Uri.parse("android_secret_code://6636"); @Override public void onReceive(Context context, Intent intent) Log.d(TAG, "on receive secret code" + " action is " + intent.getAction()); if (intent.getAction() == null) Log.i(TAG, "Null action"); return; if (intent.getAction().equals(SECRET_CODE_ACTION)) Uri uri = intent.getData(); if (uri.equals(mUri)) //注意启动自己需要的APP主界面即可 Intent mIntent = new Intent(context, MainActivity.class); mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(mIntent); else Log.i(TAG, "No matched URI!"); else Log.i(TAG, "Not SECRET_CODE_ACTION!");
如果本篇文章帮到了您,或者觉得不错,请帮忙点赞,你的关注是我分享者前进的动力,有不对的,或者好方法请
指出一起学习,转载请注明出处
以上是关于Android 使用暗码启动App的主要内容,如果未能解决你的问题,请参考以下文章