AI开发实战8-Web浏览框(WebView)的定制1
Posted xjbclz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AI开发实战8-Web浏览框(WebView)的定制1相关的知识,希望对你有一定的参考价值。
7 Web浏览框(WebView)的定制
7.1 增加拨号功能
目前许多网页上都显示有电话号码,供用户在浏览网页的时候,可以直接拨打电话,但App Inventor2提供的Web浏览框不支持此功能,使用不方便,现修改源码使其支持此功能。
Web浏览框额源码文件是WebViewer.java,首先需要在此文件中添加申请拨打电话权限的代码:
@UsesPermissions(permissionNames ="android.permission.INTERNET, android.permission.CALL_PHONE")
创建浏览框时,会执行如下代码如下:
private void resetWebViewClient()
if (SdkLevel.getLevel() >= SdkLevel.LEVEL_FROYO)
webview.setWebViewClient(FroyoUtil.getWebViewClient(ignoreSslErrors,followLinks, container.$form(), webview.getContext(), this));
else
webview.setWebViewClient(new WebViewerClient());
目前用户使用的Android设备的系统版本都大于SdkLevel.LEVEL_FROYO,所以在创建Web浏览框时,还会调用FroyoUtil.java里的getWebViewClient函数:
public static WebViewClientgetWebViewClient(final boolean ignoreErrors,
final boolean followLinks, final Form form, final Context context, finalComponent component)
return new WebViewClient()
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
//判断url如果以tel:开始,则意味此url中包含了电话号码,点击此url,调用系统拨号功能
if (url.startsWith("tel:"))
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
context.startActivity(intent);
return true;
return !followLinks;
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler,SslError error)
if (ignoreErrors)
handler.proceed();
else
handler.cancel();
form.dispatchErrorOccurredEvent(component, "WebView",
ErrorMessages.ERROR_WEBVIEW_SSL_ERROR);
;
如下图所示:
网页上有技术支持热线这个电话号码,右边有个拨号图标,点击此图标,就显示如下拨号界面(我用的Android6.0系统的模拟器,不同模拟器或设备界面可能不同):
除了增加拨号功能外,也可以通过判断url是否以sms:开头,增加发送短信的功能。
以上是关于AI开发实战8-Web浏览框(WebView)的定制1的主要内容,如果未能解决你的问题,请参考以下文章