如何在 WebView 应用程序上启用深度链接
How to Enable Deep-Linking on a WebView Application
我的应用程序是一个 WebView 应用程序,我已经设置了 URL Intent Filters,因此当单击域为“riftacademy.org”的 link 时,它会打开我的应用程序。
现在我正在尝试在 WebView 应用程序中实现深度 linking...
我在这里的帖子中看到了类似的内容How to enable deep-linking in WebView on Android app?
但与上面使用自定义 URI Scheme 打开应用程序不同的是,我想在我的 WebView 中使用我的域名“riftacademy.org”实现深度 linking。 13=]
在这种情况下,当单击 link(例如 https://riftacademy.org/login or https://riftacademy.org/register)时,它应该打开应用程序并转到与 link 匹配的页面。但在这种情况下,它打开应用程序但只加载主页 riftacademy.org...
我希望 WebView 应用程序能够在应用程序打开后加载 links,类似于 YouTube 和 Facebook 处理 links
的方式
WebView中是否可以使用域名实现Deep-Linking?
我猜测可能需要编辑的地方的片段
newWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setData(Uri.parse(url));
startActivity(browserIntent);
return true;
}
});
return true;
}
});
提前致谢
因此,在来自 https://webintoapp.com 的 Ron 的帮助下,我已经能够解决这个问题......这是通过使用 URI Intent Filters 并将以下代码放在 MainActivity.java 和 AndroidManifest.xml
我将此添加到我 MainActivity.java 的 OnCreate 方法中...网站名称应添加在 else{mWebView.loadUrL[= 之后13=]
SetWebView(mWebView);
Intent intent = getIntent();
Uri data = intent.getData();
if(data != null) {
//Load the deep-link url:
String url = intent.getDataString();
mWebView.loadUrl(url);
}
else
{
mWebView.loadUrl("https://riftacademy.org/");
}
这对我的 MainActivity.xml... android:host 也应该是网站 URL
<activity android:name=".MainActivity">
<intent-filter android:label="The Title">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="riftacademy.org" />
</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="http"
android:host="riftacademy.org" />
这将使 WebView 应用能够加载所有类型的链接,只要链接以网站的默认 URL 开头
我的应用程序是一个 WebView 应用程序,我已经设置了 URL Intent Filters,因此当单击域为“riftacademy.org”的 link 时,它会打开我的应用程序。
现在我正在尝试在 WebView 应用程序中实现深度 linking...
我在这里的帖子中看到了类似的内容How to enable deep-linking in WebView on Android app?
但与上面使用自定义 URI Scheme 打开应用程序不同的是,我想在我的 WebView 中使用我的域名“riftacademy.org”实现深度 linking。 13=]
在这种情况下,当单击 link(例如 https://riftacademy.org/login or https://riftacademy.org/register)时,它应该打开应用程序并转到与 link 匹配的页面。但在这种情况下,它打开应用程序但只加载主页 riftacademy.org...
我希望 WebView 应用程序能够在应用程序打开后加载 links,类似于 YouTube 和 Facebook 处理 links
的方式WebView中是否可以使用域名实现Deep-Linking?
我猜测可能需要编辑的地方的片段
newWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setData(Uri.parse(url));
startActivity(browserIntent);
return true;
}
});
return true;
}
});
提前致谢
因此,在来自 https://webintoapp.com 的 Ron 的帮助下,我已经能够解决这个问题......这是通过使用 URI Intent Filters 并将以下代码放在 MainActivity.java 和 AndroidManifest.xml
我将此添加到我 MainActivity.java 的 OnCreate 方法中...网站名称应添加在 else{mWebView.loadUrL[= 之后13=]
SetWebView(mWebView);
Intent intent = getIntent();
Uri data = intent.getData();
if(data != null) {
//Load the deep-link url:
String url = intent.getDataString();
mWebView.loadUrl(url);
}
else
{
mWebView.loadUrl("https://riftacademy.org/");
}
这对我的 MainActivity.xml... android:host 也应该是网站 URL
<activity android:name=".MainActivity">
<intent-filter android:label="The Title">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="riftacademy.org" />
</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="http"
android:host="riftacademy.org" />
这将使 WebView 应用能够加载所有类型的链接,只要链接以网站的默认 URL 开头