我怎么能从电话拨号器回忆一个隐藏的应用程序?

时间:2016-09-23 00:57:55

标签: android hidden

我的最终项目要求必须隐藏应用程序,并且除非在电话拨号器中输入一些代码(例如:* 123#),否则永远不会再打开它可以帮助我们完成这项任务吗?

2 个答案:

答案 0 :(得分:0)

这有点棘手,它有起伏,但你需要做的基本上是:

  1. 在应用安装上,您需要以编程方式禁用应用图标,以便您无法手动打开它。
  2. PROCESS_OUTGOING_CALLS意图过滤器中注册了BroadcastReceiver(不要忘记设置uses-permissions)。
  3. 在接收器中,侦听每个已拨打的号码,当它与您的 匹配时,您需要再次激活应用程序图标 ,然后启动可能有额外数据的活动稍后再处理。
  4. 处理完您活动中的数据后,请记得再次停用图标
  5. 以编程方式禁用图标使用:

    PackageManager packageManager = getPackageManager();
                ComponentName componentName = new ComponentName(this, MainActivity.class);
                packageManager.setComponentEnabledSetting(
                        componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP
                );
    

    启用它:

     PackageManager packageManager = context.getPackageManager();
                    ComponentName componentName = new ComponentName(context, MainActivity.class);
                    packageManager.setComponentEnabledSetting(
                            componentName,PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP
                    );
    

    在您的接收器中获取您需要使用的拨打号码:

    if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
         String number = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
    
         // Validate and start your activity here
         // To start an activity from a receiver you need to use the flag FLAG_ACTIVITY_NEW_TASK in your intent
    }
    

    注意:以编程方式隐藏图标后,您可能希望 finish() 该活动,以便在首次运行时自动关闭。

    P.S我有一个这方面的工作样本,所以请放心,因为我已经测试过它确实有效,遗憾的是我无法用勺子喂你最后的项目。不要犹豫,问什么。祝你好运

答案 1 :(得分:-1)

Android中没有此类功能。您可以使用自定义主屏幕进行此操作,但没有"隐藏此应用程序"默认启动器中的功能。