【问题标题】:Why is action android:name="android.intent.action.VIEW" added into AndroidManifest.xml when there is a android:name="android.intent.action.MAIN"为什么在有 android:name="android.intent.action.MAIN" 时将动作 android:name="android.intent.action.VIEW" 添加到 AndroidManifest.xml 中
【发布时间】:2021-05-26 12:16:39
【问题描述】:

我知道我可以在 AndroidManifest.xml 中设置<action android:name...>

我认为<action android:name...>只能分配一次。

但是从下面的项目中,我发现<action android:name="android.intent.action.VIEW"/>被添加到AndroidManifest.xml中,当有<action android:name="android.intent.action.MAIN"/>时,为什么?

https://github.com/sanogueralorenzo/Android-Kotlin-Clean-Architecture

https://github.com/igorwojda/android-showcase

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.sanogueralorenzo.namingishard">

    <application
        android:name=".App"
        ...
        android:theme="@style/AppTheme">
        <activity
            android:name=".SplashActivity"
            android:theme="@style/AppTheme.Splash">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.intent.action.VIEW" />

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

</manifest>

【问题讨论】:

    标签: android android-studio


    【解决方案1】:

    但是从下面的项目中,我发现AndroidManifest.xml中有一个,为什么?

    来自the documentation that explains this.

    您可以创建包含多个 实例的过滤器。如果这样做,您需要确定该组件可以处理这些过滤器元素的任何和所有组合。

    换句话说,这是一个快捷方式,表明应用处理的意图具有MAIN 操作或VIEW 操作,具有LAUNCHER 类别。 p>

    换句话说,这个:

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

    相当于这个:

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

    文档还提供了an example

    【讨论】:

      【解决方案2】:

      让 Google 能够抓取您的应用内容并允许用户输入 您的应用从搜索结果中,您必须添加意图过滤器 应用清单中的相关活动。这些意图过滤器允许 深度链接到您的任何活动中的内容。例如, 用户可能会单击深层链接以查看购物中的页面 描述用户正在搜索的产品的应用程序。

      这是第一个原因,第二个是

      ACTION_VIEW 当您有一些活动可以向用户显示的信息(例如 在图库应用中查看的照片,或在地图应用中查看的地址。

      同时 ACTION_MAIN 动作表明这是主要入口点并且不期望任何意图数据。 所以activity可以两者兼得

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多