android stdio如何隐藏最上面的app标题 android 隐藏桌面图标

hi,粉丝朋友们大家好!今天开始我们来开发一个android手机上如何动态隐藏桌面图标案例! 项目背景: 手机上桌面图标有时候不想被其他人发现,我们安装了某些应用,比如陌陌,xxx交友,和平精英等等 具体实现方案讨论: 方案1:在桌面launcher上面进行对应图标隐藏既可以 缺点:只能隐藏桌面图标,但是一些应用中心等也一样有入口,所以不彻底 方案2:在桌面launcher隐藏,而且framework层面实现拦截跳转,如framework在startActivity地方进行拦截 缺点:这里可能会让第三方应用一样可以看到应用,但是点击了没有反应,而且需要修改framework相对成本较大 方案3:android本身有一个系统级别api,setComponentEnabledSetting,这接口直接让app的Launcher图标组件直接为disable状态,直接Launcher,应用中心等无法获取应用入口,而且应用入口即使被写死componentName也无法通过startActivity启动 优点:先比前2个方案隐藏彻底性最好,而且系统级别应用既可以实现,不需要framework参与,减少耦合,一般框架framework修改的原则都是尽量可以简单在应用实现的就在应用实现

实现过程及demo源码

这里需要分2个大步骤实现:

1、获取要隐藏的app入口的ComponentName,然后再调用setComponentEnabledSetting方法,这里我们demo,暂时写死一个固定ComponentName,项目中大家可以通过PackageManager获取所有的Launcher 图标,然后再做一个listview显示开关,这里demo实现核心代码如下:

binding.fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { PackageManager packageManager = getPackageManager(); if (enableState == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) { enableState =PackageManager.COMPONENT_ENABLED_STATE_DISABLED; } else { enableState =PackageManager.COMPONENT_ENABLED_STATE_ENABLED; } packageManager.setComponentEnabledSetting(new ComponentName("com.panzq.applicationb","com.panzq.applicationb.TcpMainActivity"), enableState, PackageManager.DONT_KILL_APP); Snackbar.make(view, "Replace with your own action enableState = " + enableState, Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } });

代码很简单,基本一看就懂就不多解释,就一个核心方法setComponentEnabledSetting

大家到这里是不是以为就完了啊?哈哈当然没有啦,以为普通第三方应用其实并没有调用setComponentEnabledSetting的权限,所以要在AndroidManifest


比丘资源网 » android stdio如何隐藏最上面的app标题 android 隐藏桌面图标

发表回复

提供最优质的资源集合

立即查看 了解详情