WebView与JS交互案例

大转盘抽奖

首先通过我们的网络工具类Rxjava Retrofit 头参拦截器 进行用户信息拦截实现用户抽奖

// A code block
var foo = 'bar';
// An highlighted block
 //创建请求头的拦截器
    private static final class headerInterceptro implements Interceptor{
        @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
        @Override
        public Response intercept(Chain chain) throws IOException {
            //获取sp里的参数
            //获取sp里的参数
            SharedPreferences user = MyApplication.context.getSharedPreferences("user", Context.MODE_PRIVATE);
            String userId = user.getString("userId", "");
            String sessionId = user.getString("sessionId", "");
            Request request = chain.request();
            Request build = request.newBuilder()
                    .addHeader("userId", userId)
                    .addHeader("sessionId", sessionId)
                    .removeHeader("User-Agent")//移除旧的
                    .addHeader("User-Agent", WebSettings.getDefaultUserAgent(MyApplication.context))
                    .addHeader("ak","0110010010000")
                    .build();

            return chain.proceed(build);
        }
    }

**


进行登录

// A code block
var foo = 'bar';
// An highlighted block
 HashMap<String, Object> map = new HashMap<>();
        map.put("phone","账号");
        map.put("pwd","加密后的密码");
        RetrofitMananger.getInstance().create()
                .getInfoToPosttoMap(MyUrl.Login_Url,map)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<ResponseBody>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(ResponseBody responseBody) {
                        try {
                            String string = responseBody.string();
                            LoginBean loginBean = new Gson().fromJson(string, LoginBean.class);
                            Toast.makeText(MainActivity.this, loginBean.getMessage()+"aa", Toast.LENGTH_SHORT).show();
                            SharedPreferences user = MyApplication.context.getSharedPreferences("user", Context.MODE_PRIVATE);
                            user.edit()
                                    //userId
                                    .putString("userId",loginBean.getResult().getUserId()+"")
                                    //sessionId
                                    .putString("sessionId",loginBean.getResult().getSessionId())
                                    .commit();

                            if (loginBean.getStatus().equals("0000")){
                                startActivity(new Intent(MainActivity.this,HomeActivity.class));
                                //在自己的url中设置一个布尔值判定当前状态
                                MyUrl.isNet=true;
                            }
                        } catch (IOException e) {
                            e.printStackTrace();
                        }

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });

点击进入抽奖轮盘

WebView的各种设置属性配置
// web_prize.addJavascriptInterface(new WebClick(),null);
WebSettings webSettings = dazhanpan.getSettings();
// 让WebView能够执行javaScript
webSettings.setJavaScriptEnabled(true);
// 让JavaScript可以自动打开windows
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
// 设置缓存
webSettings.setAppCacheEnabled(true);
// 设置缓存模式,一共有四种模式
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
// 设置缓存路径
// webSettings.setAppCachePath("");
// 支持缩放(适配到当前屏幕)
webSettings.setSupportZoom(true);
// 将图片调整到合适的大小
webSettings.setUseWideViewPort(true);
// 支持内容重新布局,一共有四种方式
// 默认的是NARROW_COLUMNS
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
// 设置可以被显示的屏幕控制
webSettings.setDisplayZoomControls(true);
// 设置默认字体大小
webSettings.setDefaultFontSize(12);
dazhanpan.loadUrl(id);
```话不多说看代码:
// A code block
var foo = ‘bar’;


```javascript
// An highlighted block
public class WebViewActivity extends AppCompatActivity {

    private WebView dazhanpan;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web_view);
        initView();
        SharedPreferences user = MyApplication.context.getSharedPreferences("user", Context.MODE_PRIVATE);
        String userId = user.getString("userId", "");
        String sessionId = user.getString("sessionId", "");

        String userInfo = sessionId + ";" + userId;
        Log.e("aaa",userInfo);

        initView();



        String id = "http://mobile.bwstudent.com/htm/lottery/index.html";


        dazhanpan.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return false;// 返回false
            }
        });
//        web_prize.addJavascriptInterface(new WebClick(),null);
        WebSettings webSettings = dazhanpan.getSettings();
        // 让WebView能够执行javaScript
        webSettings.setJavaScriptEnabled(true);
        // 让JavaScript可以自动打开windows
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        // 设置缓存
        webSettings.setAppCacheEnabled(true);
        // 设置缓存模式,一共有四种模式
        webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        // 设置缓存路径
//        webSettings.setAppCachePath("");
        // 支持缩放(适配到当前屏幕)
        webSettings.setSupportZoom(true);
        // 将图片调整到合适的大小
        webSettings.setUseWideViewPort(true);
        // 支持内容重新布局,一共有四种方式
        // 默认的是NARROW_COLUMNS
        webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
        // 设置可以被显示的屏幕控制
        webSettings.setDisplayZoomControls(true);
        // 设置默认字体大小
        webSettings.setDefaultFontSize(12);
        dazhanpan.loadUrl(id);




        if (MyUrl.isNet != false) {
            String userAgentString = webSettings.getUserAgentString();
            String ua = userAgentString + "/" + userInfo;
            Log.i("抽奖", ua);
            String[] split = ua.split("/");
            String[] split1 = split[split.length - 1].split(";");
            Log.i("抽奖", split1[1]);
            Log.i("抽奖", split1[0]);
            Log.e("aaa",userAgentString);
            webSettings.setUserAgentString(userAgentString + "/" + userInfo);
        } else {

            Toast.makeText(this, "请先登录tubie", Toast.LENGTH_SHORT).show();
        }


    }

    private void initView() {
        dazhanpan = (WebView) findViewById(R.id.dazhanpan);
    }
}


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值