android framework项目开发案例-动态隐藏Launcher上图标
Posted Android高级知识分享官
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android framework项目开发案例-动态隐藏Launcher上图标相关的知识,希望对你有一定的参考价值。
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声明对应权限
但是大家发现这里编译器是有提示错误的,说这里是系统级别权限,所以第三方app运行起来是一定会崩溃报错的哦,那接下来就是要解决这个报错权限问题,那么请看下一篇blog吧。
课程答疑和新课信息:QQ交流群:422901085进行课程讨论,加群主qq享受 优惠
FrameWork入门课视频链接:https://edu.csdn.net/course/detail/30298
FrameWork实战课1视频链接:https://edu.csdn.net/course/detail/30275
FrameWork跨进程通信视频链接:https://edu.csdn.net/course/detail/35911
专题博客系列:
Android 8.1 zygote 启动过程源码
Android Framework实战视频–Zygote的fork进程篇
Android Framework实战视频–SystemServer启动篇
Android Framework实战视频–SystemServer启动FallbackHome篇
Android Framework实战视频–FallbackHome进程启动及Activity启动篇
Android Framework实战视频–FallbackHome结束启动Launcher篇
Android Framework实战视频–BootAnimation的启动源码分析(Android8.1)
Android Framework实战视频–init进程的bootanimation启动源码分析(补充Android 10部分的BootAnimation的启动源码分析)
以上是关于android framework项目开发案例-动态隐藏Launcher上图标的主要内容,如果未能解决你的问题,请参考以下文章
android framework项目开发案例-动态隐藏Launcher上图标2
android framework项目开发案例-动态隐藏Launcher上图标
android framework项目开发案例-动态隐藏Launcher上图标
Android Framework实战开发-binder通信常见使用方式,及案例分析