我正在尝试创建一个类似 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>
但是当我单击网页中链接到我的 app://something/another thing 的链接时,它只会给我一个页面未找到类型的错误,并且不会打开我的应用程序。
我到处看看,我发现我需要添加<data>
里面有标签<intent-filter>
。这里缺少什么?
在其他相关问题中搜索示例时,我找不到同时使用这两个问题的示例<action android:name="android.intent.action.MAIN" />
and
<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>
UPDATE:正如开发者 82 在评论中提到的,如果您这样做,应用程序图标将消失,用户将无法打开该应用程序。要解决此问题,您需要创建一个新标签来放置<data>
随着default
, browsable
类别和view
action.
The <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>
让我知道是否有帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)