关于从URL启动Android应用程序

Fel*_*v.- 11 android intentfilter android-intent android-activity

我试图弄清楚如何从URL启动应用程序,以及我应该如何编写该URL.

我的AndroidManifest中有以下代码:

<activity android:name=".MyActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"></action>
        <action android:name="android.intent.action.VIEW"></action>
        <category android:name="android.intent.category.LAUNCHER"></category>
        <category android:name="android.intent.category.DEFAULT"></category>
        <category android:name="android.intent.category.BROWSABLE"></category>
        <data android:host="my.app" android:scheme="http"></data>
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

我使用了本回答中解释的URL ,但没有任何反应.

如果我的意图写得很好,请告诉我,以及我应该如何编写调用该应用程序的URL,并注意我需要调用我的"主要"活动.

Com*_*are 26

你需要有两个<intent-filter>元素<activity>.一个将是MAINLAUNCHER.另一个是for VIEW,BROWSABLE/ DEFAULT和你的<data>元素:

<activity android:name=".MyActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"></action>
        <category android:name="android.intent.category.LAUNCHER"></category>
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.VIEW"></action>
        <category android:name="android.intent.category.DEFAULT"></category>
        <category android:name="android.intent.category.BROWSABLE"></category>
        <data android:host="my.app" android:scheme="http"></data>
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

然后,http://my.app应该启动您的活动.

  • 我发现的一点是,如果你使用的url有一个路径组件,但你的intent过滤器不包含android:path部分,它就不会被拾取. (2认同)