安卓使用webView中的JavaScript代码

在安卓程序中调用webview是一件很简单的事,但是想要获得webview的代码却是比较麻烦,
首先要进行的一步操作就是

第一步:

WebSettings settings = wvIntroduce.getSettings();
settings.setJavaScriptEnabled(true);//使webview能够支持JavaScript代码

第二步:
创建一个类作为借口,然后让html代码调用该接口,使得将数据 传回安卓程序中(注意 @JavascriptInterface必须得有)

 class ShareInterface{
        @JavascriptInterface
        public void shareEvent(String content,String image,String title,String url){
            ToolUtils.getInstance(context).popWeChatShareing( LayoutInflater.from(context).inflate(R.layout.poping_layout, null),findViewById(R.id.popStart),
                    content,image,R.drawable.ic_launcher,title,url);
        }
    }

第三步:
创建ShareInterface对象同时将该对象以及html代码的要调用的对象名添加到webview当中

 ShareInterface shareInterface = new ShareInterface();
 wvIntroduce.addJavascriptInterface(shareInterface, "android_callBack");//"android_callBack"为html代码要调用的对象名

第四步:
在html代码中的function函数当中使用 android_callBack.shareEvent(content,image,title,url);方法将值回调给安卓程序

样例代码

package com.daniujuntuan.android.activity.common;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageView;
import android.widget.TextView;

import com.daniujuntuan.android.AppCommon;
import com.daniujuntuan.android.R;
import com.daniujuntuan.android.activity.MainActivity;
import com.daniujuntuan.android.activity.anzahlungsgarantie_f.AnzahlungsgarantieFActivity;
import com.daniujuntuan.android.activity.help_look.HelpLookActivity;
import com.daniujuntuan.android.activity.help_look.HelpLookBelowOrderActivity;
import com.daniujuntuan.android.activity.help_look.HelpLookOrderDetailActivity;
import com.daniujuntuan.android.activity.user.log_regist.RegisterActivity;
import com.daniujuntuan.android.utils.ActivityUtils;
import com.daniujuntuan.android.utils.ToolUtils;
import com.daniujuntuan.android.wxapi.WechatLoginBindingMobileActivity;

public class WebViewShowActivity extends Activity {

    private WebView wvIntroduce;
    private TextView tvTitle,tvScreen;
    private ImageView imgBack;
    private Context context;
    private ImageView imgTitleRightImage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_webview_show);
        context = this;
        wvIntroduce = (WebView) findViewById(R.id.wvIntroduce);
        tvScreen = (TextView) findViewById(R.id.tvScreen);
        tvTitle = (TextView) findViewById(R.id.tvTitle);
        imgBack = (ImageView) findViewById(R.id.imgBack);
        imgTitleRightImage = (ImageView) findViewById(R.id.imgTitleRightImage);
        imgTitleRightImage.setVisibility(View.VISIBLE);
        tvScreen.setVisibility(View.GONE);

        imgBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (wvIntroduce.canGoBack()) {
                    wvIntroduce.goBack();
                    return;
                }
                if (AppCommon.ANZAHLUNGSGARANTIEF_INTRODUCE.equals(getIntent().getExtras().getString(AppCommon.WEBVIEW_URL))) {
                    ActivityUtils.jump(context, AnzahlungsgarantieFActivity.class, getIntent().getExtras());
                    finish();
                } else if (AppCommon.ANZAHLUNGSGARANTIEF_RULES.equals(getIntent().getExtras().getString(AppCommon.WEBVIEW_URL))) {
                    ActivityUtils.jump(context, AnzahlungsgarantieFActivity.class, getIntent().getExtras());
                    finish();
                } else if (AppCommon.HELP_LOOK_ORDER_REPORT.equals(getIntent().getExtras().getString(AppCommon.WEBVIEW_URL)) ||
                        (AppCommon.HELP_LOOK_ORDER_INTRODUCE.equals(getIntent().getExtras().getString(AppCommon.WEBVIEW_URL))
                                && AppCommon.HELP_LOOK_ORDER_INTRODUCE_ORDER_DETAIL.equals(getIntent().getExtras().getString(AppCommon.HELP_LOOK_ORDER_INTRODUCE_WHO)))) {
                    ActivityUtils.jump(context, HelpLookOrderDetailActivity.class, getIntent().getExtras());
                    finish();
                } else if (AppCommon.HELP_LOOK_ORDER_INTRODUCE.equals(getIntent().getExtras().getString(AppCommon.WEBVIEW_URL))
                        && AppCommon.HELP_LOOK_ORDER_INTRODUCE_BELOW_ORDER.equals(getIntent().getExtras().getString(AppCommon.HELP_LOOK_ORDER_INTRODUCE_WHO))
                        || (AppCommon.HELP_LOOK_BELOW_ORDER_MUST_KNOW.equals(getIntent().getExtras().getString(AppCommon.WEBVIEW_URL)))) {
                    ActivityUtils.jump(context, HelpLookBelowOrderActivity.class);
                    finish();
                } else if (AppCommon.HELP_LOOK_INTRODUCE.equals(getIntent().getExtras().getString(AppCommon.WEBVIEW_URL))) {
                    ActivityUtils.jump(context, HelpLookActivity.class);
                    finish();
                } else if (AppCommon.REGIST_SERVICE_AGREEMENT_REGIST.equals(getIntent().getExtras().getString(AppCommon.REGIST_SERVICE_AGREEMENT_WHO))) {
                    ActivityUtils.jump(context, RegisterActivity.class, getIntent().getExtras());
                    finish();
                } else if (AppCommon.REGIST_SERVICE_AGREEMENT_BINDING.equals(getIntent().getExtras().getString(AppCommon.REGIST_SERVICE_AGREEMENT_WHO))) {
                    ActivityUtils.jump(context, WechatLoginBindingMobileActivity.class, getIntent().getExtras());
                    finish();
                } else if (AppCommon.PAGE_TYPE_HOME_PAGE_FRAGMENT.equals(getIntent().getExtras().getString(AppCommon.PAGE_TYPE))) {
                    Bundle bundle = new Bundle();
                    bundle.putString(AppCommon.MAIN_PAGE_TYPE, AppCommon.MAIN_PAGE_HOME_PAGE);
                    ActivityUtils.jump(context, MainActivity.class, bundle);
                    finish();
                }
            }
        });
        tvScreen.setVisibility(View.GONE);
        String pathUrl="";

        Bundle bundle=getIntent().getExtras();
        if(bundle!=null) {
            tvTitle.setText(bundle.getString(AppCommon.WEBVIEW_TITLT));
            pathUrl = bundle.getString(AppCommon.WEBVIEW_URL) + "?from=app";
            if (AppCommon.ANZAHLUNGSGARANTIEF_INTRODUCE.equals(getIntent().getExtras().getString(AppCommon.WEBVIEW_URL))) {
                pathUrl = bundle.getString(AppCommon.WEBVIEW_URL) + "?from=app";
            }
            if (AppCommon.ANZAHLUNGSGARANTIEF_RULES.equals(getIntent().getExtras().getString(AppCommon.WEBVIEW_URL))) {
                pathUrl = bundle.getString(AppCommon.WEBVIEW_URL) + "?from=app";
            }
            if (AppCommon.HELP_LOOK_ORDER_REPORT.equals(getIntent().getExtras().getString(AppCommon.WEBVIEW_URL))) {
                pathUrl = bundle.getString(AppCommon.WEBVIEW_URL) + bundle.getString(AppCommon.HELP_LOOK_ORDER_ORDERID) + "?from=app";
            }
            if (AppCommon.HELP_LOOK_ORDER_INTRODUCE.equals(getIntent().getExtras().getString(AppCommon.WEBVIEW_URL))) {
                pathUrl = bundle.getString(AppCommon.WEBVIEW_URL) + "?from=app";
            }
            if (AppCommon.REGIST_SERVICE_AGREEMENT.equals(getIntent().getExtras().getString(AppCommon.WEBVIEW_URL))) {
                pathUrl = bundle.getString(AppCommon.WEBVIEW_URL) + "?from=app";
            }
            if (AppCommon.PAGE_TYPE_HOME_PAGE_FRAGMENT.equals(getIntent().getExtras().getString(AppCommon.PAGE_TYPE))) {
                pathUrl = bundle.getString(AppCommon.WEBVIEW_URL) + "?from=app";
            }
            loadingWebView(pathUrl);
        }
    }

    private void loadingWebView(String pathUrl) {
        ShareInterface shareInterface = new ShareInterface();
        WebSettings settings = wvIntroduce.getSettings();
        settings.setJavaScriptEnabled(true);
        wvIntroduce.loadUrl(pathUrl);
        wvIntroduce.addJavascriptInterface(shareInterface, "android_callBack");
        wvIntroduce.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                String urlPath = url + "?from=app";
                wvIntroduce.loadUrl(urlPath);
                return true;
            }

        });
    }

    class ShareInterface{
        @JavascriptInterface
        public void shareEvent(String content,String image,String title,String url){
            ToolUtils.getInstance(context).popWeChatShareing( LayoutInflater.from(context).inflate(R.layout.poping_layout, null),findViewById(R.id.popStart),
                    content,image,R.drawable.ic_launcher,title,url);
//            popWeChatShareing(content, image, title, url);
        }
    }

//    //微信分享选择弹出框
//    private void popWeChatShareing(String content, final String image,String title,String url) {
//        View view = LayoutInflater.from(this).inflate(R.layout.poping_layout, null);
//        final ImageView imgWxFriend = (ImageView) view.findViewById(R.id.imgWxFriend);//分享给朋友
//        ImageView imgCircleOfFriends = (ImageView) view.findViewById(R.id.imgCircleOfFriends);//分享的朋友圈
//        TextView tvCancle = (TextView) view.findViewById(R.id.tvCancle);
//        final PopupWindow window=popBackgroundAnim(view);
//
//
//        //微信分享
//        WXWebpageObject webpage = new WXWebpageObject(); //初始化一个WXWebObject对象
//        //分享url
//        webpage.webpageUrl = url;
//        final WXMediaMessage msg = new WXMediaMessage(webpage);//用WXTextObject实例化一个WXMediaMessage对象
//        //分享的标题
//        msg.title=title;
//        //分享的内容
//        msg.description=content;
//        //分享的图片
//        Bitmap thumb = BitmapUtil.drawableToBitmap(getResources().getDrawable(R.drawable.ic_launcher));
//        msg.setThumbImage(thumb);//设置默认,防止图片未缓存到时分享
//
//
//        window.showAsDropDown(view);
//
//        tvCancle.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                window.dismiss();
//            }
//        });
//
//        imgWxFriend.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//
//                final MyDialog myDialog =MyDialog.createDialog(context);
//                myDialog.setMessage("请稍后...");
//                myDialog.setCancelable(false);
//                myDialog.show();
//
//
//                Handler handlerBitmap = new Handler() {
//                    @Override
//                    public void handleMessage(Message message) {
//                        super.handleMessage(message);
//                        Bitmap bitmap = (Bitmap) message.obj;
//                        if(bitmap==null){
//                            shareFriend(msg, window, myDialog);
//                            return;
//                        }
//                        bitmap = PhotoDisposeUtils.compressWeChatImage(bitmap, 10);
//                        msg.setThumbImage(bitmap);
//                        shareFriend(msg, window, myDialog);
//                    }
//                };
//                VolleyImageRequestPacking.getInstance(context).loadingNetImageToBitmap(image, handlerBitmap, 0, 0, 0, Bitmap.Config.RGB_565);
//
//            }
//        });
//
//        imgCircleOfFriends.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//
//
//                final MyDialog myDialog =MyDialog.createDialog(context);
//                myDialog.setMessage("请稍后...");
//                myDialog.setCancelable(false);
//                myDialog.show();
//
//                Handler handlerBitmap = new Handler() {
//                    @Override
//                    public void handleMessage(Message message) {
//                        super.handleMessage(message);
//                        Bitmap bitmap = (Bitmap) message.obj;
//                        if(bitmap==null){
//                            shareCircleofFriends(msg, window, myDialog);
//                            return;
//                        }
//                        bitmap = PhotoDisposeUtils.compressWeChatImage(bitmap, 10);
//                        msg.setThumbImage(bitmap);
//                        shareCircleofFriends(msg, window, myDialog);
//                    }
//                };
//                VolleyImageRequestPacking.getInstance(context).loadingNetImageToBitmap(image,handlerBitmap,0,0,0, Bitmap.Config.RGB_565);
//
                ImageRequest request=new ImageRequest(photoList.get(0), new Response.Listener<Bitmap>() {
                    @Override
                    public void onResponse(Bitmap bitmap) {
                        if(bitmap==null){
                            shareCircleofFriends(msg, window, myDialog);
                            return;
                        }
                        bitmap = PhotoDisposeUtils.compressWeChatImage(bitmap, 10);
                        msg.setThumbImage(bitmap);
                        shareCircleofFriends(msg, window, myDialog);
                    }
                }, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                        Bitmap thumb = BitmapUtil.drawableToBitmap(getResources().getDrawable(R.drawable.iconfont_car));
                        msg.setThumbImage(thumb);
                        shareCircleofFriends(msg, window, myDialog);
                    }
                });
                MyApplication.getHttpQueue().add(request);
//            }
//        });
//
//    }
//
//    //弹出框背景以及动画
//    private PopupWindow popBackgroundAnim(View view) {
//        // 下面是两种方法得到宽度和高度 getWindow().getDecorView().getWidth()
//        PopupWindow window = new PopupWindow(view,
//                WindowManager.LayoutParams.MATCH_PARENT,
//                WindowManager.LayoutParams.WRAP_CONTENT);
//
//        // 设置popWindow弹出窗体可点击,这句话必须添加,并且是true
//        window.setFocusable(true);
//
//        // 实例化一个ColorDrawable颜色为半透明
//        ColorDrawable dw = new ColorDrawable(0xb0000000);
//        window.setBackgroundDrawable(dw);
//
        // 设置popWindow的显示和消失动画
        window.setAnimationStyle(R.style.mypopwindow_anim_style);
//        // 在底部显示
//        window.showAtLocation(findViewById(R.id.popStart), Gravity.BOTTOM, 0, 0);
//        return window;
//    }
//
//    //    分享到朋友
//    private void shareFriend(WXMediaMessage msg,PopupWindow window,MyDialog myDialog){
//        boolean sIsWXAppInstalledAndSupported = MyApplication.getApi().isWXAppInstalled()
//                && MyApplication.getApi().isWXAppSupportAPI();
//        if(sIsWXAppInstalledAndSupported) {
//            SendMessageToWX.Req req = new SendMessageToWX.Req();//        构造一个rep
//            req.message = msg;
//            MyApplication.getApi().sendReq(req);
//            window.dismiss();
//            myDialog.dismiss();
//        }else {
//            DialogUtils.showToastShort(context, "您的手机未安装微信!");
//            myDialog.dismiss();
//        }
//    }
//
//    private void shareCircleofFriends(WXMediaMessage msg,PopupWindow window,MyDialog myDialog){
//        boolean sIsWXAppInstalledAndSupported = MyApplication.getApi().isWXAppInstalled()
//                && MyApplication.getApi().isWXAppSupportAPI();
//        if(sIsWXAppInstalledAndSupported) {
//            DialogUtils.showToastShort(context, "请稍候...");
//            SendMessageToWX.Req req = new SendMessageToWX.Req();//        构造一个rep
//            req.scene = SendMessageToWX.Req.WXSceneTimeline;
//            req.transaction = String.valueOf(System.currentTimeMillis());//transaction用来标记唯一标识请求
//            req.message = msg;
//            MyApplication.getApi().sendReq(req);
//            window.dismiss();
//            myDialog.dismiss();
//        }else {
//            DialogUtils.showToastShort(context, "您的手机未安装微信!");
//            myDialog.dismiss();
//        }
//    }
//


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode==KeyEvent.KEYCODE_BACK&&wvIntroduce.canGoBack()){
            wvIntroduce.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    @Override
    public void onBackPressed() {
        imgBack.performClick();
        super.onBackPressed();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值