使用暗码启动内置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,该如何实现呢,其实去网上搜索暗...

Android apk签名、第三方内置、图标添加与删除、开关机动画及铃声、启动第三方程序

Android apk签名、第三方内置、图标添加与删除、开关机动画及铃声、启动第三方程序的代码、添加壁纸选择列表(壁纸选择器)一:apk签名签名方法:1:添加权限    在AndroidManif...

Android进阶——启动内置APK和动态发送接收自定义广播

Android系统为我们提供了很多服务管理框架,PackageManager主要是管理应用程序包,通过它就可以获取应用程序信息并构建Intent,启动对应的应用。除此之外Android还未我们提供了一...

Android apk签名、第三方内置、图标添加与删除、开关机动画及铃声、启动第三方程序

Android apk签名、第三方内置、图标添加与删除、开关机动画及铃声、启动第三方程序的代码、添加壁纸选择列表(壁纸选择器)一:apk签名签名方法:1:添加权限    在AndroidManifes...

Android—启动内置APK和动态发送接收自定义广播

工作中遇到这样一个需求,需要为按键添加一个亲情号,提供一个接口启动内置的APK,思考再三决定更改Framework,利用广播机制去实现。一、代码动态自主启动内置APK我们都知道Android系统为我们...

内置PDF说明书(自己的APK中启动adobe.reader打开PDF)

android 启动第三方程序的代码 http://blog.csdn.net/vrix/article/details/6851557http://www.cnblogs.com/qingblog/...
  • f24762
  • f24762
  • 2015年02月05日 15:05
  • 407

第三方apk内置因签名导致SystemUI未启动启动问题案例分析

这个问题是刷完机正常开机后,发现手机无状态栏,下拉通知栏,按音量键也无法出现VolumeDialog,开始看到这个现象感觉是systemUI未编译到版本中去?或者是在systemserver中syst...

隐藏内置apk及Canvas画图.

  • 2012年09月08日 15:13
  • 25KB
  • 下载

Android APK内置(经验积累)

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

如何内置客制(第三方)的apk到ROM中

1,如何将带源码的 APK 预置进系统?                                                                                ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用暗码启动内置APK
举报原因:
原因补充:

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