Android - 为我的应用创建一个架构,该架构将从网页链接打开

时间:2015-06-02 19:46:09

标签: android android-intent android-manifest

我正在尝试创建一个类似myapp:// somthing / anotherthing的模式,如果网页或该模式的任何其他应用程序链接将打开我的应用程序。

我已将此添加到我的AndroidManifest.xml中以用于我的主要活动:

    <activity
        android:name="com.example.MainActivity"
        android:label="@string/title_activity_main"
        android:configChanges="orientation"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Light.NoTitleBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="myapp" />
        </intent-filter>
    </activity>

但是当我点击链接到myapp:// somthing / anotherthing的网页中的链接时,它只是给了我一个找不到错误类型的页面而且没有打开我的应用程序。

我看到的任何地方,我发现我需要在<data>内添加<intent-filter>标记。这里缺少什么?

1 个答案:

答案 0 :(得分:0)

在其他相关问题中搜索示例我无法找到使用两者的示例 的 <action android:name="android.intent.action.MAIN" />  和 的 <action android:name="android.intent.action.VIEW" />  (后者似乎对这种行为是强制性的。)

无论如何,可以同时使用两者。这是我的工作范例:

<activity
        android:name="com.example.MainActivity"
        android:label="@string/title_activity_main"
        android:configChanges="orientation"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Light.NoTitleBar" android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="myapp" />
            </intent-filter>
        </activity>

所以,以下标签似乎可以解决问题:

android:exported="true"
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />

这是我在网页上使用的主播:

<a href="myapp://somthing/anotherthing">Open the app!</a>

更新:正如评论中提到的开发者82,如果您这样做,应用图标将消失,用户无法打开该应用。要解决此问题,您需要创建一个新标记,以便将<data>defaultbrowsable类别和view操作结合起来。

<activity>标记应如下所示:

    <activity
            android:name="com.example.MainActivity"
            android:label="@string/title_activity_main"
            android:configChanges="orientation"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Light.NoTitleBar" android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

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

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="myapp" />
            </intent-filter>
            </activity>

让我知道它是否有帮助!