最近改了个隐式app 拉起,发动图标也有不同的玩法

0 个发动图标

<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
    <category android:name="android.intent.category.BROWSABLE" />
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <data
        android:host="app"
        android:path="/"
        android:port="8080"
        android:scheme="lb">
    </data>
</intent-filter>

这里是对承受一切隐式拉起,这个是告知系统app 发动不需要用户手动拉起,是为了被代码或许其他中转站调用,所以不需要用户手动拉起,天然就不必再显现图标

1个发动图标

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

LAUNCHER 是决定是不是要显现在程序列表里,默认为主动唤起,也是Android 标准发动形式,会正常在手机的界面显现

2 个发动图标

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
    <activity android:name="com.camera.demo.1Activity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="com.camera.demo.2Activity"
        android:icon="@mipmap/ic_launcher" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

上面说了android.intent.category.LAUNCHER 为是否显现在应用列表内,所以我们装备多个LAUNCHER,就会有多个图标显现在手机列表内

intent-filter 相关说明

承受页面隐式跳转的过滤器,

action

有必要的包括,界说一些操作.android.intent.action.MAIN/android.intent.action.WEB_SEARCH

Android  0,1,2 个发动图标

category

一个字符串, 包括了处理该Intent的组件的品种信息, 起着对action的补充说明作用

Android  0,1,2 个发动图标

data

要指定承受的 Intent 数据,Intent 过滤器既能够不声明任何<data>元素,也能够声明多个此类元素,如下例所示:

<intent-filter>
  <data android:mimeType="video/mpeg" android:scheme="http" ... />
  <data android:mimeType="audio/mpeg" android:scheme="http" ... />
  ...
</intent-filter>

每个<data>元素均可指定 URI 结构和数据类型(MIME 媒体类型)。URI 的每个部分都是一个单独的特点:schemehostportpath

<scheme>://<host>:<port>/<path>

下例所示为这些特点的可能值:

content://com.example.project:200/folder/subfolder/etc

在此 URI 中,架构content,主机是com.example.project,端口是200,途径是folder/subfolder/etc。 在<data>元素中,上述每个特点均为可选,但存在线性依靠关系:

  • 假如未指定架构,则会疏忽主机。
  • 假如未指定主机,则会疏忽端口。
  • 假如未指定架构和主机,则会疏忽途径。

将 Intent 中的 URI 与过滤器中的 URI 标准进行比较时,它仅与过滤器中包括的部分 URI 进行比较。例如:

  • 假如过滤器仅指定架构,则具有该架构的一切 URI 均与该过滤器匹配。
  • 假如过滤器指定架构和权限,但未指定途径,则具有相同架构和权限的一切 URI 都会经过过滤器,不管其途径如何均是如此。
  • 假如过滤器指定架构、权限和途径,则仅具有相同架构、权限和途径的 URI 才会经过过滤器。

最后贴张LAUNCHER 的原理图

Android  0,1,2 个发动图标