AI开发实战8-Web浏览框(WebView)的定制1
来源:互联网 发布:java 定义空的数组 编辑:程序博客网 时间:2024/06/06 02:10
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
- AI开发实战9-Web浏览框(WebView)的定制2
- AI开发实战7-列表显示框(Listview)的定制
- AI开发实战2-定制自己的AI伴侣
- AI开发实战4-文本输入框(TextBox)的定制1
- AI开发实战3-定制自己的Screen
- AI开发实战6-图像组件(Image)的定制
- AI开发实战10-文件管理器(File)的定制
- AI开发实战5-文本输入框(TextBox)的定制2
- AI开发实战1-App Inventor的编译
- AI开发实战11-加密功能插件的开发
- APP开发实战149-Android Studio模板的定制使用
- 开启 Android WebView 的安全浏览模式
- 《通过Web远程浏览并控制Tiny6410上的usb摄像头》---实战篇
- 我的Web开发实战总结(一)
- 我的Web开发实战总结(二)
- java web开发学习-5 实战1
- web service 开发实战
- 初入MyBatis框架<三>
- angularJS动态生成的页面中,ng-click无效解决办法
- IO-内存操作流
- Linux 线程
- Android Fragment(2)
- AI开发实战8-Web浏览框(WebView)的定制1
- pharse 精灵图的截取
- linux文件系统
- sas统计分析学习笔记(六)
- python基础----变量,数据类型
- 系统架构设计方法论——TOGAF
- AI开发实战9-Web浏览框(WebView)的定制2
- EXCEL常用函数
- [Leetcode] 44. Wildcard Matching