我已经尝试过如何处理 webView URL 上的 intent://? 这个解决方案只是在我的 WebView 中打开一个 Google Play 商店网页,我想要的是点击,另一个应用程序应该打开,其意图在 Chrome 中提供。
我的应用程序有一个运行良好的 WebView。在一个阶段,WebView 请求访问以下内容(外部支付应用程序):
intent://pay/?pa=digitalshowroom1.payu@indus&pn=DOTPE%20PRIVATE%20LIMITED&tr=13261664955&tid=CX0FOrvSrHzDh7gP&am=1.00&cu=INR&tn=OrderId-CX0FOrvSrHzDh7gP
Run Code Online (Sandbox Code Playgroud)
当我使用 WebView 在 Chrome 中使用的相同网站时,它成功打开外部支付应用程序,即 Chrome 能够处理该意图,我的应用程序如何处理相同的意图。
我似乎知道我必须使用
public boolean shouldOverrideUrlLoading(WebView view, String url)
Run Code Online (Sandbox Code Playgroud)
为此,我使用它如下:
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url != null && (url.startsWith("whatsapp://") || url.startsWith("tel") || url.startsWith("market"))) {
view.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
}
else {
return false;
}
Run Code Online (Sandbox Code Playgroud)
现在,这段代码正在处理诸如打开 WhatsApp、呼叫应用程序等的意图,因为它们以whatsappor开头tel,因此我可以利用该url.startsWith()方法。
如何处理请求访问外部应用程序并以 开头的链接intent://?
提前致谢!
当我将url加载到WebView并尝试打开链接时,其中一些显示错误页面,如:
net :: ERR_UNKNOWN_URL_SCHEME意图://maps.yandex.ru?utm_medium = tab ...
如何打开此链接,或者至少检查是否安装了适当的应用并运行它?
我试图通过实现自定义WebViewClient来覆盖url加载:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (!url.startsWith("http")) {
getActivity().startActivity(new Intent(Intent.ACTION_VIEW).setData(Uri.parse(url)));
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,应用程序崩溃与ActivityNotFoundException.
02-24 20:58:51.886 31255-31255/ru.uxapps.voicesearch W/System.err: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=intent://maps.yandex.ru?utm_medium=tab-maps&text=???????&utm_source=serp&yandexuid=2258091361456330110 }
02-24 20:58:51.886 31255-31255/ru.uxapps.voicesearch W/System.err: at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1798)
02-24 20:58:51.886 31255-31255/ru.uxapps.voicesearch W/System.err: at android.app.Instrumentation.execStartActivity(Instrumentation.java:1512)
02-24 20:58:51.886 31255-31255/ru.uxapps.voicesearch W/System.err: at android.app.Activity.startActivityForResult(Activity.java:3930)
02-24 20:58:51.886 31255-31255/ru.uxapps.voicesearch W/System.err: at android.app.Activity.startActivityForResult(Activity.java:3890)
02-24 20:58:51.886 31255-31255/ru.uxapps.voicesearch W/System.err: at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:784)
02-24 20:58:51.886 31255-31255/ru.uxapps.voicesearch W/System.err: at android.app.Activity.startActivity(Activity.java:4213) …Run Code Online (Sandbox Code Playgroud)