在Android中不进行域验证是否可以在app中打开链接?



我想实现的情况下,如果我点击一个深链接在android,它应该引导我到应用程序,而不是浏览器。事情在安卓版本12以下工作正常,一个对话框出现在应用程序或浏览器中打开链接。但在Android 12及以上版本中,每次链接都在浏览器中打开。是否有任何方法可以使其工作,而不做域验证,当点击链接时在浏览器中打开的域不属于我。

我注意到这个行为在"信号应用"它总是打开应用程序中的链接,即使设备离线,条件是应用程序已安装。

这是我的清单文件代码。我正在尝试通过深链接打开MainActivity2 .

<application
android:name=".App"
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/Theme.NotificationApp"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts"/>
</activity>
<activity android:name=".MainActivity2"
android:exported="true"
android:launchMode="standard">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="papayacoders.in"
android:scheme="http" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="papayacoders.in"
android:scheme="https" />
</intent-filter>
</activity>
</application>`

检查一下:https://developer.android.com/training/app-links

根据文档,该行为从Android 12开始改变。这可能是一种安全措施。

Web链接是使用HTTP和HTTPS协议的深层链接。在Android 12及更高版本上,点击网页链接(不是Android应用链接)总是会在网页浏览器中显示内容。在运行以前版本Android的设备上,如果用户设备上安装的应用程序或其他应用程序也可以处理web链接,用户可能不会直接进入浏览器。

所以你需要实现"App links"相反。

最新更新