android WebView onJsAlert onJsConfirm

简介: package com.html; import com.sqlite.Dao.NcpRegisterDAO; import android.app.

package com.html;

import com.sqlite.Dao.NcpRegisterDAO;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.Toast;


public class Register_protocolActivity extends Activity {
  

    private Handler mHandler = new Handler();
    private WebView mWebView;
    private NcpRegisterDAO dao = null;
   
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        //踩上一脚,记录有了就知道复位的时候要去哪里
        dao = new NcpRegisterDAO(Register_protocolActivity.this);
        String name = "MainActivity";
        dao.add_Stepped(name);
       
        //隐藏标题栏
        //requestWindowFeature(Window.FEATURE_NO_TITLE);
        //隐藏状态栏
        //getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        //该ACTIVITY不需要layout设置,所以直接指向MainActivity的main
        setContentView(R.layout.protocol);
        //将WebView实例化
        mWebView = (WebView) this.findViewById(R.id.webView);
        //WebView打开权限
        mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        mWebView.getSettings().setJavaScriptEnabled(true);
        //WebView,SWF文件运行权限
        mWebView.getSettings().setPluginsEnabled(true);


        mWebView.addJavascriptInterface(new Action(), "ncp"); 
    
       mWebView.loadUrl("file:///android_asset/protocol.html");

      
         
          // 创建WebViewChromeClient
               WebChromeClient wvcc = new WebChromeClient() {            
          // 处理Alert事件
            
             public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
              // 构建一个Builder来显示网页中的alert对话框
                             Builder builder = new Builder(Register_protocolActivity.this);
                                 builder.setTitle("计算1+2的值");
                                 builder.setMessage(message);
                                 builder.setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() {
                                     @Override
                                     public void onClick(DialogInterface dialog, int which) {
                                         result.confirm();
                                     }
                                 });
                                builder.setCancelable(false);
                                 builder.create();
                                 builder.show();
                                 return true;
                             }
            
            
             // 处理Confirm事件
                     public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) {
                         Builder builder = new Builder(Register_protocolActivity.this);
                         builder.setTitle("退出确认");
                         builder.setMessage(message);
                         builder.setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() {
                             public void onClick(DialogInterface dialog, int which) {
                                 //result.confirm();
                                // 从协义开始到发送注册信息,这些步骤退出后直接清零复位表,不然如果非正常关机后再重启会再次进入该页
                                dao.Clear_NcpStep_Set0();
                                 finish();
                                
                             }
        
                         });
                         builder.setNeutralButton(android.R.string.cancel, new AlertDialog.OnClickListener() {
        
                          public void onClick(DialogInterface dialog, int which) {
                                 result.cancel();
                             }
        
                         });
                         builder.setCancelable(false);
                         builder.create();
                         builder.show();
                         return true;
                     }
            
          };
       // 设置setWebChromeClient对象
          mWebView.setWebChromeClient(wvcc);
      
      
      
    }
   
    final class Action { 
       
        Action() { 
        } 
        
        public void clickOnAndroid_register() { 
           mHandler.post(new Runnable() { 
                public void run() { 
                   // mWebView.loadUrl("javascript:wave()");           
                    Toast.makeText(getBaseContext(), "欢迎进入注册!", Toast.LENGTH_SHORT).show();
                    //Intent intent = new Intent(MainActivity.this,Register.class);
                    Intent intent = new Intent(Register_protocolActivity.this,Register_IDcard.class);
                    Register_protocolActivity.this.startActivity(intent);
                      //设置切换动画,从右边进入,左边退出
                    overridePendingTransition(R.xml.in_from_right, R.xml.out_to_left);
                   
                } 
            }); 
        }  
       
       
        public void clickOnAndroid_quit() { 
            mHandler.post(new Runnable() { 
                 public void run() { 
                     finish();
                 } 
             }); 
         }
    } 

     //禁止回退
    public void onBackPressed() {
               // TODO Auto-generated method stub
               return;
               //super.onBackPressed();
    }
   
    @Override
    protected void onStop() {
        super.onStop();
        System.out.println("onStop!!");
        finish();
        // The activity is no longer visible (it is now "stopped")
    }

}

 

目录
相关文章
|
API Android开发 数据安全/隐私保护
解决android webview 加载http url 失败 net::ERR_CLEARTEXT_NOT_PERMITTED 错误
解决android webview 加载http url 失败 net::ERR_CLEARTEXT_NOT_PERMITTED 错误
919 0
|
14天前
|
程序员 开发工具 Android开发
Android|WebView 禁止长按,限制非白名单域名的跳转层级
如何限制 WebView 仅域名白名单网址能随意跳转,并禁用长按选择文字。
27 2
|
5月前
|
安全 JavaScript 前端开发
kotlin开发安卓app,JetPack Compose框架,给webview新增一个按钮,点击刷新网页
在Kotlin中开发Android应用,使用Jetpack Compose框架时,可以通过添加一个按钮到TopAppBar来实现WebView页面的刷新功能。按钮位于右上角,点击后调用`webViewState?.reload()`来刷新网页内容。以下是代码摘要:
|
5月前
|
JavaScript 前端开发 Android开发
kotlin安卓在Jetpack Compose 框架下使用webview , 网页中的JavaScript代码如何与native交互
在Jetpack Compose中使用Kotlin创建Webview组件,设置JavaScript交互:`@Composable`函数`ComposableWebView`加载网页并启用JavaScript。通过`addJavascriptInterface`添加`WebAppInterface`类,允许JavaScript调用Android方法如播放音频。当页面加载完成时,执行`onWebViewReady`回调。
|
4月前
|
Web App开发 JavaScript 前端开发
Android端使用WebView注入一段js代码实现js调用android
Android端使用WebView注入一段js代码实现js调用android
99 0
|
5月前
|
Web App开发 移动开发 前端开发
52. 【Android教程】网页视图:WebView
52. 【Android教程】网页视图:WebView
85 1
|
5月前
|
安全 网络安全 API
kotlin安卓开发JetPack Compose 如何使用webview 打开网页时给webview注入cookie
在Jetpack Compose中使用WebView需借助AndroidView。要注入Cookie,首先在`build.gradle`添加WebView依赖,如`androidx.webkit:webkit:1.4.0`。接着创建自定义`ComposableWebView`,通过`CookieManager`设置接受第三方Cookie并注入Cookie字符串。最后在Compose界面使用这个自定义组件加载URL。注意Android 9及以上版本可能需要在网络安全配置中允许第三方Cookie。
|
6月前
|
XML Android开发 数据格式
安卓和webview交互
安卓和webview交互
59 0
|
6月前
|
XML Android开发 数据格式
安卓和webview交互
安卓和webview交互
101 1
|
Android开发 iOS开发 UED
Android webView 实现阻尼回弹效果
iOS webView默认滑动到顶部或者底部的时候,还可以继续通过手指拉扯滑动,松手后回弹;而Android webView默认是不行的,要实现跟iOS一样的效果,就需要自定义webView。
574 0