android方法入口,Android App多个入口的实现方法
经常看到有App提供多个入口,就是桌面上显示有多种图标,点不同图标进入不同的功能页。
基本实现很简单,以下是步骤。
1. AndroidManifest.xml里注册别名。
在 里添加
android:name=".test"
android:enabled="false"
android:icon="@drawable/applogo"
android:label="@string/app_name"
android:launchMode="singleTask"
android:clearTaskOnLaunch="true"
android:targetActivity=".splashActivity">
说明一下:
android:name 参数就是这个入口的名称。
android:enabled 打开和关闭的参数。
android:icon 入口显示的图标,这样就可以给不同的入口设置不同的图标了。
android:label 就是桌面上显示的名称。
android:targetActivity 是重点,就是你点击了不同的入口会选择进入的页面。通过这个就能设置不同入口的不同功能了。
搞定,So easy!。
不要急,我们拓展一下。
2.动态更新入口。
刚才我们设置了``````,通过名称,我们就可以使用 PackageManager 对他进行操作了。
假设我们有个主要的 LAUNCHER ,像这样名叫 splashActivity :
android:name=".splashActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/FirstTheme">
以及一个上面这样的 activity-alias
我们通过 PackageManager 的 setComponentEnabledSetting 方法就可以关闭和打开入口:
private ComponentName mDefault = getComponentName();
private ComponentName mDoubleSpring = new ComponentName(getBaseContext(),"com.boosj.boosjapp.test");
private PackageManager mPm = getApplicationContext().getPackageManager();
disableComponent(mDefault);
enableComponent(mDoubleSpring);
private void enableComponent(ComponentName componentName) {
mPm.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_ENABLED,PackageManager.DONT_KILL_APP);
}
private void disableComponent(ComponentName componentName) {
mPm.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP);
}
这个例子中就关闭了主入口,仅仅保留了test入口。执行后查看桌面就会发现只剩下test的入口图标了。
当然,也可以给他加上条件,实现动态自动更新。
private ComponentName mDefault = getComponentName();
private ComponentName mDoubleSpring = new ComponentName(getBaseContext(),"com.boosj.boosjapp.test");
private PackageManager mPm = getApplicationContext().getPackageManager();
/**
* 计算是否在日期范围内
*/
try {
Date date = new Date();
Log.d("LOGCAT",mathFactory.Date2ms("2018-03-01 00:00:00")+"_"+date.getTime());
if (mathFactory.Date2ms("2018-03-01 00:00:00")>date.getTime()) {
disableComponent(mDefault);
enableComponent(mDoubleSpring);
}else {
enableComponent(mDefault);
disableComponent(mDoubleSpring);
}
}catch (Exception e){
enableComponent(mDefault);
disableComponent(mDoubleSpring);
}
private void enableComponent(ComponentName componentName) {
mPm.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_ENABLED,PackageManager.DONT_KILL_APP);
}
private void disableComponent(ComponentName componentName) {
mPm.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP);
}
这个例子中,实现了2018.3.1日前桌面会显示 activity-alias 的图标,而原来的主要图标被隐藏了。等到2018.3.1过完,图标又回复原样,
3.一个小问题。
这个方法有个问题,就是在主 LAUNCHER disable后,如果要更新,就会报找不到 LAUNCHER 文件的错误而使App崩溃。而不让更新显然是不可能的。所以那种只显示一个图标,按条件动态更新的需求,用此方法是恐怕不能做到了。
(或者有什么更好的主意,欢迎探讨。)
这个方法其实本来是想做App图标的动态更新的。(然而最终失败了,具体原因就是上面说的崩溃问题。)
还是把他作为多入口的方法记录一下吧。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
android方法入口,Android App多个入口的实现方法相关推荐
- android root权限函数,android 4.4下app永久获取root权限的方法
本帖最后由 jackson 于 2017-4-16 20:55 编辑 通过参照 [FAQ11414]android KK 4.4 版本后,user 版本su 权限严重被限制问题说明 http://ww ...
- android 厨房的使用方法,下厨房APP怎么用 下厨房使用方法汇总
下厨房安卓版是中文互联网上的第款家庭美食应用,可以为喜爱美食的用户提供食材食品.厨房用品购买与菜谱查询.分享.在下厨房的使用过程中,用户可能会遇到一些问题,这个时候,就可以看看小编为大家带来的下厨房使 ...
- android智能家居使用的协议,基于Android的智能家居APP的设计与实现论文.docx
基于Android的智能家居APP的设计与实现中文摘要I I 基于 Android 的智能家居 APP 的设计与实现 中文摘要 本课题来源于某 IT 企业"智能家居系统"项目.移动 ...
- qtdesigner怎么实现菜单栏跳转_人人都可写代码-Android零基础编程-app 入口菜单栏实操08...
欢迎来到人人都可写代码,大家好,我是杨晓华,今天我们的课程内容是项目实操,以智者精选项目为例,编写一个Android app的入口关联菜单栏逻辑. 这是要实现的菜单栏组件展示效果,下面就是教大家如何制 ...
- 小草 客户端 android,小草app安卓版入口
这里小编为大家提供一个非常不错的线上的看剧软件哦,这里每天都会更新一些市面上比较火爆的各种视频资源,而且更新的速度也是十分的快捷的,无需任何的花费,的大家就可以轻松的在线来观看了.整个平台为大家提供的 ...
- Android 一个apk多个ICON执行入口
为什么80%的码农都做不了架构师?>>> 方法一:使用Activity的属性process,不同的Activity是运行在不同的进程中 一个工程对应一个AndroidManif ...
- evernote android版本,Evernote Android 版更新,给您超便捷笔记入口
Evernote Android 版更新,给您超便捷笔记入口 作者: Evernote Taiwan 发布日期: 27 九月2015 问问Android 使用者他们为何选择Android,其中一个肯定 ...
- Android App定位和规避内存泄露方法研究
from:http://site.douban.com/android/widget/notes/350758/note/167481484/ 工作中刚好用到,网上搜到的,觉得不错,与大家分享 And ...
- 视频播放的方法Android,详解Android App中使用VideoView来实现视频播放的方法
通过VideoView播放视频的步骤: 1.在界面布局文件中定义VideoView组件,或在程序中创建VideoView组件 2.调用VideoView的如下两个方法来加载指定的视频 (1)setVi ...
最新文章
- 【SM2证书】利用BC的X509v3CertificateBuilder组装X509国密证书
- 基于双向LSTM和迁移学习的seq2seq核心实体识别
- Java Review - SimpleDateFormat线程不安全原因的源码分析及解决办法
- Vim文件管理器NERD tree
- Scala父类构造方法
- 给运维工程师的Cheatsheets! 《Shell脚本速查手册》免费下!
- Linux 环境变量PATH设置和查看etc/profile和bashrc的区别
- 地震了?不,是心动了!
- java 滚动显示信息_滚动显示文本的Java程序
- 微信小程序demo2
- 物理术语的理解(二)
- 面向过程编程与面向对象编程
- Java课程设计-旅游管理系统
- pytthon django开发php,记录Django开发心得
- CSS实现折角样式效果
- 简历中的star法则
- 数据库实验六综合实验-水果商店进阶一
- perl对日志进行压缩备份小程序
- [Hive]那些年我们踩过的Hive坑
- c语言函数求1到n的k次方和
热门文章
- WebRTC offer - answer交换sdp流程分析
- 金蝶eas系统服务器地址,金蝶eas更换服务器地址
- 转行游戏公司却无从下手,游戏美术设计这个岗位再不了解就晚了!
- 图的m色着色问题 回溯法(算法设计与分析)Java
- Factory Io智能工厂联合西门子1200 PLC仿真,控制单台机械手和两台工位机械手上下料
- tomcat配置SSL报错解决:java.lang.IllegalArgumentException: Invalid character (CR or LF) found in method nam
- Flink ReducingState 实例
- DNS 服务与邮件服务器应用--配置DNS正向解析与反向解析
- java基础(1~100以内的质数)
- C语言 在程序中打开网页,模拟鼠标点击、键盘输入