AI开发实战8-Web浏览框(WebView)的定制1

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xjbclz/article/details/77620838

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:开头,增加发送短信的功能。

猜你喜欢

转载自blog.csdn.net/xjbclz/article/details/77620838