当前位置: 首页 > 编程笔记 >

Android中一个应用实现多个图标的几种方式

许曦
2023-03-14
本文向大家介绍Android中一个应用实现多个图标的几种方式,包括了Android中一个应用实现多个图标的几种方式的使用技巧和注意事项,需要的朋友参考一下

前言

最近因为新需求需要,我的应用将有多个ICON入口..最终选择了 activity-alias , 其实实现多图标有好几种方式,下面就给大家总结下,分享出来供大家参考学习:

1. 多Activity + intent-filter方式

因为launcher会扫描app中含有以下intent-filter属性的标签, 有的话就会将其添加到桌面.

所以只要在你想添加到桌面的activity下加上以下标签即可.

<intent-filter>
 <action android:name="android.intent.action.MAIN" />
 <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

2. activity-alias方式

上面第一种方式对于一个activity的要求是没法做的, 只能通过多写几个入口Activity+ 跳转参数的方式来解决, 而 activity-alias方式就可以很好解决该问题.

activity-alias中, android:name 就是你定义这个activity为什么名字, 你通过点击这个图标进入的话, 在代码中

getIntent().getComponent().getClassName()

可以获取到该名字, targetActivity 就是你点击该图标后的目标activity. 上面代码是写在目标activity里面的,获取到的名字依然是我们定义的名字哦. 这样就可以通过这个判断是通过哪个入口进来的了.

<activity-alias
 android:name="@string/altman"
 android:exported="true"
 android:icon="@drawable/speech_01"
 android:label="@string/altman_app_name"
 android:screenOrientation="landscape"
 android:targetActivity="com.avatar.dialog.DialogActivity"
 android:theme="@style/DialogActivityTheme" >
 <intent-filter>
  <action android:name="android.intent.action.MAIN" />

  <category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>
</activity-alias>

3. 网页标签-添加快捷方式

这只是针对特殊情形, 比如UC浏览器创建一个网页标签在桌面上,是向桌面应用(launcher)发送相关action的广播,相关的action如下:

public static final String ACTION_ADD_SHORTCUT = "com.android.launcher.action.INSTALL_SHORTCUT";

需要的权限:

<!-- 添加快捷方式 -->
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<!-- 移除快捷方式 -->
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
<!-- 查询快捷方式 -->
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />

添加图标

private void addShortcut(String name) {
  Intent addShortcutIntent = new Intent(ACTION_ADD_SHORTCUT);

  // 不允许重复创建
  addShortcutIntent.putExtra("duplicate", false);// 经测试不是根据快捷方式的名字判断重复的
  // 应该是根据快链的Intent来判断是否重复的,即Intent.EXTRA_SHORTCUT_INTENT字段的value
  // 但是名称不同时,虽然有的手机系统会显示Toast提示重复,仍然会建立快链
  // 屏幕上没有空间时会提示
  // 注意:重复创建的行为MIUI和三星手机上不太一样,小米上似乎不能重复创建快捷方式

  // 名字
  addShortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name);

  // 图标
  addShortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
    Intent.ShortcutIconResource.fromContext(MainActivity.this,
      R.drawable.ic_launcher));

  // 设置关联程序
  Intent launcherIntent = new Intent(Intent.ACTION_MAIN);
  launcherIntent.setClass(MainActivity.this, MainActivity.class);
  launcherIntent.addCategory(Intent.CATEGORY_LAUNCHER);

  addShortcutIntent
    .putExtra(Intent.EXTRA_SHORTCUT_INTENT, launcherIntent);

  // 发送广播
  sendBroadcast(addShortcutIntent);
 }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。

 类似资料:
  • 本文向大家介绍Android实现View滑动的几种方式,包括了Android实现View滑动的几种方式的使用技巧和注意事项,需要的朋友参考一下 什么是View?实现View滑动的方式有哪些? 1. 关于View我们需要知道的 (1)什么是View? Android中的View类是所有UI控件的基类(Base class),也就是说我们平时所有到的各种UI控件,比如Button、ImagView等等

  • 本文向大家介绍Android 动画实现几种方案,包括了Android 动画实现几种方案的使用技巧和注意事项,需要的朋友参考一下 Android 动画实现几种方案 在 Android 的 FrameWork 中,为我们提供三种动画的实现方式:逐帧(Frame)动画、视图/补间动画(View Animation)和属性动画(Property Animation)。由于,这三种动画的实现方式和针对面不一

  • 我试图使用jFreechart生成两个图,每个图有12个图(在jFreechart中称为系列)。然而,有些图表被简单地跳过了!我知道我在这里有同步问题,并试图使用用户@trashgod在这里提供的方法,但我失败了。我知道我使用摇摆工人的方式是错误的!我不知道怎么修好它 每个图形应该包含10个平行的水平直线的图形。正如你在所附的图像中看到的,一些线条丢失了。这两个数字也必须相同(事实并非如此)。在实

  • 本文向大家介绍Java 多线程有几种实现方式?相关面试题,主要包含被问及Java 多线程有几种实现方式?时的应答技巧和注意事项,需要的朋友参考一下 有4种,分别是: 继承Thread类 实现Runnable接口 实现Callable接口通过FutureTask包装器来创建Thread线程 通过线程池创建线程,使用线程池接口ExecutorService结合Callable、Future实现有返回结

  • 语言是一种规范,要想使用它,需要将其实体化,用编译原理的话讲,可以大致分为编译器和解释器,而根据之前说的,如果把目标代码的解释过程看做解析过程,比如x86机器指令load到cpu时,根据不同的指令进行不同的运算,以及字节码的分派等,这个界限是模糊的 因此,这个事情可以这么讲,假设我们已经有一台机器M,它可以接收A语言并完成计算工作,则对于高级语言B来说,我们只要将其转换成A语言即可。根据实际情况,

  • 本文向大家介绍android几种不同对话框的实现方式,包括了android几种不同对话框的实现方式的使用技巧和注意事项,需要的朋友参考一下 app中肯定是少不了与用户交互的各种dialog,下面给大家介绍几种提示框的提示。 一般创建一个对话框需要经过以下几步:   1、创建AlertDialog.Builder对象。   2、调用AlertDialog.Builder的setTitle()或者se