拨号启动android应用的实现

拨号启动android应用的实现

android中通常有需求将应用隐藏起来,通过拨号调用相应的应用

之前一直以为这些是内核实现的操作,全然不知是在应用中实现相应的操作!!!我这条善于忘事的鱼儿做个记录吧,不然下次汉宝又该说我 "这个问题我说了至少有三遍了!"汗~~~

在manifest文件中声明一个广播接收器的步骤:

  1. 指定 广播接收者在应用程序的manifest文件中:







  2. 自定义广播和继承onReceive方法:

     import android.content.BroadcastReceiver;
     import android.content.Context;
     import android.content.Intent;
    
     import com.supoin.hardtest.MainActivity;
    
     import static com.supoin.hardtest.broadcast.SystemBroadCast.SECRET_CODE_ACTION;
     public class DialBroadcastReceiver extends BroadcastReceiver {
     @Override
     public void onReceive(Context context, Intent intent) {
     if (intent.getAction().equals(SECRET_CODE_ACTION)) {
     Intent intentMain = new Intent(Intent.ACTION_MAIN);
     intentMain.setClass(context, MainActivity.class);
     //FLAG_ACTIVITY_NEW_TASK : This flag is used to create a new task and launch an activity into it.
     intentMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     context.startActivity(intentMain); //启动mainActivity
                }
           }
     }

    这里需要在广播中判断当前应用是否启动的操作。

  3. 安装应用之后便可以在拨号中输入 (##123##)启动你的应用了!
  4. 如果还想将你的应用隐藏图标,不在桌面上显示,仅通过拨号来启动的话,需要在manifest文件中,将启动activity的launch注释掉:

     <activity
     android:name="com.supoin.test_hard.MainActivity"
     android:label="@string/app_name">
     <intent-filter>
     <action android:name="android.intent.action.MAIN">
     <!--<category android:name="android.intent.category.LAUNCHER"/>-->
     </intent-filter>
     </activity>
  5. 补充:如果应用没有启动过,就无法用这种方式启动;所以通过拨号启动时,必须先手动启动应用一次才可以;


上次只提到了需要启动一次才可以进行拨号调用,但是没有具体说明怎么手动启动。在这里详细说明一下。

在第三方程序中启动该应用:

    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.setComponent(new ComponentName("com.test.app",
       "com.test.app.MainActivity"));
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);

其中,com.test.app为应用程序包名,而com.test.app.MainActivity为所要启动的Activity。

第一次用另外一个应用启动,之后可以通过拨号进行调用该隐藏的apk,这么做的原因是首次启动时需要权限,在5.1系统以后都需要权限,以前是apk放在在system下有特权,5.1系统之后都是需要权限的。

转载于:https://www.cnblogs.com/skyeblogs/p/7645425.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值