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

6 篇文章 0 订阅

上一篇说到的是使用了发送广播启动暗码,还有一种就是在源码中修改代码。预置需要使用暗码启动的apk。可以是带源码预置或者不带源码预置,我测试的是没有使用带源码,直接预置的APK,再添加一个Android.mk。
如果直接预置apk,就不需要用到Receiver了,注册文件也不要写注册广播的代码。
1:
我们直接在源码中找到DialpadFragment.java
(路径:../packages/apps/Dialer/src/com/android/dialer/dialpad/DialpadFragment.java)

private void handleDialButtonPressed(int type) {
        if (isDigitsEmpty()) { // No number entered.
            handleDialButtonClickWithEmptyDigits();
        } else {
            final String number = mDigits.getText().toString();

            /**
             * modify 
             * *#666666*#
             */

       +  if(number.compareTo("*#666666#*")==0){
             Intent intent=new Intent(Intent.ACTION_MAIN);
             intent.setClassName("com.example.testbg","com.example.testbg.MainActivity");            
             intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
             try{     
             startActivity(intent);      
             }catch(ActivityNotFoundExceptione){
                 Log.e(TAG, "startActivity() failed:"+e);
             }
             return;
         }
         //modify end
        ......
}

2:
或者在SpecialCharSequenceMgr.java
(路径:../packages/apps/Dialer/src/com/android/dialer/SpecialCharSequenceMgr.java)
添加代码:

 + private static final String MMI_TAG_DISPLAY="*#666666#";

+ private static boolean handleSwupDisplay(Context context, String input){
            if (input.equals(MMI_SWUP_DISPLAY)) {
                Intent swupintent=new Intent();
                swupintent.setClassName("com.example.testbg","com.example.testbg.MainActivity");
                swupintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                try {
                    context.startActivity(swupintent);
                } catch (ActivityNotFoundException e) {
                    Log.e(TAG, "startActivity() failed: " + e);
                }
                return true;
            }
            return false;
        }

在handleChars中添加:handleSwupDisplay(context,dialString)

public static boolean handleChars(Context context, String input, EditText textField) {
        /// M: for ALPS01692450 @{
        // check null
        if(context == null) {
            return false;
        }
        /// @}

        //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)
                || handleAdnEntry(context, dialString, textField)
                || handleSecretCode(context, dialString)
              + || handleSwupDisplay(context,dialString)
                ......
                }

上面两种添加方法都可以实现暗码启动该APK。
两者的区别可参考博客:http://blog.csdn.net/qq3162380/article/details/45393335

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值