繁体   English   中英

如何从电话拨号器中调出隐藏的应用程序?

[英]how can i recall a hidden app from phone dialer?

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

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

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

要以编程方式禁用图标,请使用:

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()活动,以便在第一次运行时自动关闭。

PS我有一个工作样本,所以请放心,因为我已经测试过它确实有效,遗憾的是我不能在你的最终项目中用勺子喂你。 不要犹豫,问任何事情。 祝你好运

Android 中没有这样的功能。 您也许可以使用自定义主屏幕来执行此操作,但默认启动器中没有“隐藏此应用程序”功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM