使用暗码启动内置APK

原创 2015年11月19日 17:39:37
   

场景设想:如果你需要隐藏你的apk icon,并通过android的拨号盘启动你的apk应用


以下是定义了*#*#(……)#*#*格式以及*#(……)*#格式;类似的输入格式都会广播SECRET_CODE_ACTION,

  1. <span xmlns="http://www.w3.org/1999/xhtml">/**
  2.      * Handles secret codes to launch arbitrary activities in the form of *#*#<code>#*#*.
  3.      * If a secret code is encountered an Intent is started with the android_secret_code://<code>
  4.      * URI.
  5.      *
  6.      * @param context the context to use
  7.      * @param input the text to check for a secret code in
  8.      * @return true if a secret code was encountered
  9.      */ 
  10.     static boolean handleSecretCode(Context context, String input) { 
  11.         // Secret codes are in the form *#*#<code>#*#* 
  12.         int len = input.length(); 
  13.         Log.i("secrectcode", "len= "+len); 
  14.         if (len > 8 && input.startsWith("*#*#") && input.endsWith("#*#*")) 
  15.          { 
  16.             Intent intent = new Intent(Intents.SECRET_CODE_ACTION, 
  17.                     Uri.parse("android_secret_code://" + input.substring(4, len - 4))); 
  18.             context.sendBroadcast(intent); 
  19.             return true
  20.         } 
  21.          else if (len ==6 && input.startsWith("*#") && input.endsWith("*#")){ 
  22.              Intent intent = new Intent(Intents.SECRET_CODE_ACTION, 
  23.                      Uri.parse("android_secret_code://" + input.substring(2, len - 2))); 
  24.              context.sendBroadcast(intent); 
  25.              return true
  26.          }  
  27.         return false
  28.     }</span> 


指定你的data,与你的receiver对应;data和action共同限定了过滤条件;


<receiver android:name=".SecretCode" >            <intent-filter>                <action android:name="android.provider.Telephony.SECRET_CODE" />                <data                    android:host="1234"                    android:scheme="android_secret_code" />            </intent-filter>        </receiver>
 
 
定义一个广播接收器
public class SecretCode extends BroadcastReceiver { private static final String MY_SECRET_CODE = "1234"; @Override public void onReceive(Context context, Intent intent) {  // TODO Auto-generated method stub  String action = intent.getAction();  String host = (intent.getData()== null)? null :intent.getData().getHost();  if (MY_SECRET_CODE.equals(host)) {   Intent mIntent = new Intent(context,BatteryActivity.class );   mIntent.setFlags(intent.FLAG_ACTIVITY_NEW_TASK);   context.startActivity(mIntent);  } }}
 
备注:这样做的APK需要设置android:sharedUserId="android.uid.system",并且需要系统签名或者在源码下编译,如果签名的APK安装以后首次输入命令会无法启动,需要运行一次APK才可以启动,为了解决这个问题我们需要将APK  Push到手机的system/app目录下就不会有该问题。


版权声明:本文为博主原创文章,未经博主允许不得转载。

android中实现暗码启动apk【一】

相信大家一定接触过手机里面的各种暗码启动app,最熟悉的就是在拨号盘输入”*#06#” 查看手机的IMEI号。如果我们也想实现一样的功能,自定义暗码启动我们自己的app,该如何实现呢,其实去网上搜索暗...
  • qq_32611951
  • qq_32611951
  • 2017年02月15日 15:49
  • 963

Android 使用暗码启动App

Android 使用暗码启动App      暗码,比如*#06#查看手机IMEI号。*#06#就是一个暗码。    我们可能有时会有这样的需求,比如我想通过手机拨号来启动一个内置无界面的app(...
  • xueshanfeihu0
  • xueshanfeihu0
  • 2017年10月11日 09:14
  • 154

【Dialer】自定义暗码进入测试模式

需要设置在拨号界面输入相应的字符串后进入到不同的模式(工程模式,工厂模式) 在SpecialCharSequenceMgr中进行相关设置 路径:\code\packages\apps\Dialer...
  • okm6666
  • okm6666
  • 2016年04月01日 17:53
  • 705

源码分析之Android通过Dialer实现暗码启动

目前接触比较多的就是通过dialer应用来启动/触发暗码。 也有通过Calculator来实现的。 本文以Dialer为例, 1.经过调试定位,发现拨号盘接对应的Activity为DialtactsA...
  • u013398960
  • u013398960
  • 2017年06月07日 14:25
  • 852

android 如何通过拨号盘暗码启动你的应用

手机上通常都有一些暗码来启动一些隐藏的功能。最常见的就是在拨号盘输入*#06#来查看imei号。 那么自己开发的应用是否也能通过这样的方式来启动呢?刚好最近一个项目刚好有这个需求,网上查了下资料。 答...
  • zhenbohuang
  • zhenbohuang
  • 2017年07月26日 12:35
  • 1042

android之从第三方启动自己的apk

本篇主要是看完郭霖大神在微信里的一篇文章后的实验 贴上大神的文章地址:http://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650235870&...
  • I_do_can
  • I_do_can
  • 2016年05月10日 16:09
  • 1016

Android中实现暗码启动APK【二】

上一篇说到的是使用了发送广播启动暗码,还有一种就是在源码中修改代码。预置需要使用暗码启动的apk。可以是带源码预置或者不带源码预置,我测试的是没有使用带源码,直接预置的APK,再添加一个Android...
  • qq_32611951
  • qq_32611951
  • 2017年02月15日 16:49
  • 528

android 内置APK

一、如何将带源码的APK预置进系统?1) 在 packages/apps 下面以需要预置的 APK的 名字创建一个新文件夹,以预置一个名为Test的APK 为例2) 将 Test AP...
  • u012382509
  • u012382509
  • 2016年11月10日 14:30
  • 1443

Android APK内置(经验积累)

由于项目需求,需要将百度输入法内置到MTK平台手机中,因此看到这一块,本人很菜,如有错误,希望各位大神帮助改正。非常感谢。 1.预装apk的目录可以选择如下两个目录: Alps/mediatek/...
  • niexu19900104
  • niexu19900104
  • 2015年03月10日 14:27
  • 569

apk内置到系统的两种方法

第一种:不需要少些系统镜像(system.img),只需要root系统。 具体操作: 1、 将手机连接电脑,并开启USB调试模式。 2、 通过CMD进入Windows命令行窗口,输如:adbsh...
  • seek_0380
  • seek_0380
  • 2016年02月24日 20:13
  • 3771
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用暗码启动内置APK
举报原因:
原因补充:

(最多只允许输入30个字)