经常看到有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多个入口的实现方法相关推荐

  1. android root权限函数,android 4.4下app永久获取root权限的方法

    本帖最后由 jackson 于 2017-4-16 20:55 编辑 通过参照 [FAQ11414]android KK 4.4 版本后,user 版本su 权限严重被限制问题说明 http://ww ...

  2. android 厨房的使用方法,下厨房APP怎么用 下厨房使用方法汇总

    下厨房安卓版是中文互联网上的第款家庭美食应用,可以为喜爱美食的用户提供食材食品.厨房用品购买与菜谱查询.分享.在下厨房的使用过程中,用户可能会遇到一些问题,这个时候,就可以看看小编为大家带来的下厨房使 ...

  3. android智能家居使用的协议,基于Android的智能家居APP的设计与实现论文.docx

    基于Android的智能家居APP的设计与实现中文摘要I I 基于 Android 的智能家居 APP 的设计与实现 中文摘要 本课题来源于某 IT 企业"智能家居系统"项目.移动 ...

  4. qtdesigner怎么实现菜单栏跳转_人人都可写代码-Android零基础编程-app 入口菜单栏实操08...

    欢迎来到人人都可写代码,大家好,我是杨晓华,今天我们的课程内容是项目实操,以智者精选项目为例,编写一个Android app的入口关联菜单栏逻辑. 这是要实现的菜单栏组件展示效果,下面就是教大家如何制 ...

  5. 小草 客户端 android,小草app安卓版入口

    这里小编为大家提供一个非常不错的线上的看剧软件哦,这里每天都会更新一些市面上比较火爆的各种视频资源,而且更新的速度也是十分的快捷的,无需任何的花费,的大家就可以轻松的在线来观看了.整个平台为大家提供的 ...

  6. Android 一个apk多个ICON执行入口

    为什么80%的码农都做不了架构师?>>>    方法一:使用Activity的属性process,不同的Activity是运行在不同的进程中 一个工程对应一个AndroidManif ...

  7. evernote android版本,Evernote Android 版更新,给您超便捷笔记入口

    Evernote Android 版更新,给您超便捷笔记入口 作者: Evernote Taiwan 发布日期: 27 九月2015 问问Android 使用者他们为何选择Android,其中一个肯定 ...

  8. Android App定位和规避内存泄露方法研究

    from:http://site.douban.com/android/widget/notes/350758/note/167481484/ 工作中刚好用到,网上搜到的,觉得不错,与大家分享 And ...

  9. 视频播放的方法Android,详解Android App中使用VideoView来实现视频播放的方法

    通过VideoView播放视频的步骤: 1.在界面布局文件中定义VideoView组件,或在程序中创建VideoView组件 2.调用VideoView的如下两个方法来加载指定的视频 (1)setVi ...

最新文章

  1. 【SM2证书】利用BC的X509v3CertificateBuilder组装X509国密证书
  2. 基于双向LSTM和迁移学习的seq2seq核心实体识别
  3. Java Review - SimpleDateFormat线程不安全原因的源码分析及解决办法
  4. Vim文件管理器NERD tree
  5. Scala父类构造方法
  6. 给运维工程师的Cheatsheets! 《Shell脚本速查手册》免费下!
  7. Linux 环境变量PATH设置和查看etc/profile和bashrc的区别
  8. 地震了?不,是心动了!
  9. java 滚动显示信息_滚动显示文本的Java程序
  10. 微信小程序demo2
  11. 物理术语的理解(二)
  12. 面向过程编程与面向对象编程
  13. Java课程设计-旅游管理系统
  14. pytthon django开发php,记录Django开发心得
  15. CSS实现折角样式效果
  16. 简历中的star法则
  17. 数据库实验六综合实验-水果商店进阶一
  18. perl对日志进行压缩备份小程序
  19. [Hive]那些年我们踩过的Hive坑
  20. c语言函数求1到n的k次方和

热门文章

  1. WebRTC offer - answer交换sdp流程分析
  2. 金蝶eas系统服务器地址,金蝶eas更换服务器地址
  3. 转行游戏公司却无从下手,游戏美术设计这个岗位再不了解就晚了!
  4. 图的m色着色问题 回溯法(算法设计与分析)Java
  5. Factory Io智能工厂联合西门子1200 PLC仿真,控制单台机械手和两台工位机械手上下料
  6. tomcat配置SSL报错解决:java.lang.IllegalArgumentException: Invalid character (CR or LF) found in method nam
  7. Flink ReducingState 实例
  8. DNS 服务与邮件服务器应用--配置DNS正向解析与反向解析
  9. java基础(1~100以内的质数)
  10. C语言 在程序中打开网页,模拟鼠标点击、键盘输入