Dan*_*Dan 6 android-webview bankid
当前状态是什么,您能否让 Android webView(不是浏览器/Chrome 自定义选项卡)解释具有自定义 url 方案的链接,例如“bankid:///?autostarttoken=xxxx-xxxxc&redirect=https://...”
这里的预期行为是 BankID 应用程序应该在加载链接时打开 - 而是获取“err_unknown_url_scheme”。有什么解决方法吗?或者是使用 Intent 的唯一方法?
尝试使用如下 Intent,它可以工作,但是重定向参数 url 会遇到问题,这会打开不需要的浏览器。将其替换为 app id/null 以保留在 webView/app 中,但随后无法在 webView 中获取预期的回调 url。
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
String url = request.getUrl().toString();
if(!url.startsWith("http") && !url.startsWith("https")) {
Uri newUri = replaceUriParameter(Uri.parse(url),
"redirect", BuildConfig.APPLICATION_ID);
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(newUri);
startActivityForResult(intent, START_ACTIVITY_FOR_RESULT_LOGIN);
view.reload();
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
这可能是一个迟到的答案,但可能对其他人有帮助。
您对于shouldOverrideUrlLoading 的方向是正确的 ,但您所需要的只是使用Intent,其余的将被处理。
这是解决方案的 kotlin 版本。
override fun shouldOverrideUrlLoading(
view: WebView?,
request: WebResourceRequest
): Boolean {
val url = request.url.toString()
if (url.isNotEmpty()) {
if (URLUtil.isNetworkUrl(url)) {
return false
} else if (url.startsWith("bankid")){
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
startActivity(intent)
}
}
return true
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1827 次 |
| 最近记录: |