在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → android 与 JS 交互 例子源码下载

android 与 JS 交互 例子源码下载

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:0.08M
  • 下载次数:15
  • 浏览次数:814
  • 发布时间:2013-09-10
  • 实例类别:Android平台开发
  • 发 布 人:crazycode
  • 文件格式:.rar
  • 所需积分:2
 相关标签: Android

实例介绍

【实例简介】
【实例截图】

【核心代码】

package com.renren.js;


import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.webkit.JsPromptResult;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;

public class PhoneTest extends Activity {      
    
    private static final String LOG_TAG = "WebViewDemo";      
    private WebView mWebView;      
    private TextView mReusultText ;      
    private Handler mHandler = new Handler();      
     
    @Override     
    public void onCreate(Bundle icicle) {      
     
        super.onCreate(icicle);      
        
        setContentView(R.layout.main); 
        
        //获得浏览器组件      
        //WebView就是一个简单的浏览器      
        //android浏览器源码存在于LINUX/android/package/apps/Browser中      
        //里面的所有操作都是围绕WebView来展开的      
        mWebView = (WebView) findViewById(R.id.webview);      
        mReusultText = (TextView) findViewById(R.id.resultText);     
        
        //WebSettings 几乎浏览器的所有设置都在该类中进行      
        WebSettings webSettings = mWebView.getSettings();      
        webSettings.setSavePassword(false);      
        webSettings.setSaveFormData(false);      
        webSettings.setJavaScriptEnabled(true);  
        webSettings.setAllowFileAccess(true); //设置允许访问文件数据 
        webSettings.setSupportZoom(false);      
  
        mWebView.setWebViewClient(new DemoWebViewClient());
        mWebView.setWebChromeClient(new MyWebChromeClient());  
        
        /*    
         * DemoJavaScriptInterface类为js调用android服务器端提供接口    
         * android 作为DemoJavaScriptInterface类的客户端接口被js调用    
         * 调用的具体方法在DemoJavaScriptInterface中定义:    
         * 例如该实例中的clickOnAndroid    
         */     
        mWebView.addJavascriptInterface(new DemoJavaScriptInterface(),"demo");      
        mWebView.loadUrl("file:///android_asset/index.html");    //对应当前project的asserts目录 
                                                                 //也可以写file:///sdcard/index.html
        
        // mWebView.loadUrl("file:///android_asset/index2.html"); 
         
    }      
    
    class DemoWebViewClient extends WebViewClient { 
    	@Override 
    	public boolean shouldOverrideUrlLoading(WebView view, String url) { 
	    	view.loadUrl(url); 
	    	return true; 
    	} 
    } 
 
    final class DemoJavaScriptInterface {      
        DemoJavaScriptInterface() {
        	
        }      
     
        /**    
         * 该方法被浏览器端调用    
         */     
        public void clickOnAndroid() {      
            mHandler.post(new Runnable() {      
                public void run() {      
                    //调用js中的wave()方法      
                    mWebView.loadUrl("javascript:wave()");      
                }      
            });      
        }      
    }      
     
    /**    
     * 继承WebChromeClient类    
     * 在这个类的3个方法中,分别使用Android的内置控件重写了Js中对应的对话框,就是说对js中的对话框做处理了,就是重写了。
     *     
     */     
    final class MyWebChromeClient extends WebChromeClient {      
     
        /**    
         * 处理alert弹出框    
         */     
        @Override     
        public boolean onJsAlert(WebView view,String url,      
                                 String message,final JsResult result) {      
            Log.d(LOG_TAG,"onJsAlert:" message);      
          //  mReusultText.setText("Alert:" message);      
            //对alert的简单封装      
//            new AlertDialog.Builder(PhoneTest.this)
//                .setTitle("Alert")
//                .setMessage(message)
//                .setPositiveButton("OK",      
//                new DialogInterface.OnClickListener() {      
//                    @Override     
//                    public void onClick(DialogInterface arg0, int arg1) {      
//                    	 // result.confirm();   
//                         // MyWebView.this.finish();   
//
//                   }      
//            })
//            .setCancelable(true)
//            .create()
//            .show();      
            
            result.confirm();      //不加上面的代码也能出框,为嘛呢?
            return true;
//            return super.onJsConfirm(view,url,message, result);      
        }      
     
        /**    
         * 处理confirm弹出框    
         */     
        @Override     
        public boolean onJsConfirm(WebView view, String url, String message,      
                JsResult result) {      
            Log.d(LOG_TAG, "onJsConfirm:" message);      
            mReusultText.setText("Confirm:" message);
            //对confirm的简单封装      
            new AlertDialog.Builder(PhoneTest.this).      
                setTitle("Confirm")
                .setMessage(message)
                .setPositiveButton("OK",      
                new DialogInterface.OnClickListener() {      
                    @Override     
                    public void onClick(DialogInterface arg0, int arg1) {      
                      
                   }      
	            })
	            .create()
	            .show();  
            
            result.confirm();      
            return true;
            //如果采用下面的代码会另外再弹出个消息框,目前不知道原理
            // 因为调用了父类的构造函数了。。。
            //return super.onJsConfirm(view, url, message, result);      
        }      
     
        /**    
         * 处理prompt弹出框    
         */     
        @Override     
        public boolean onJsPrompt(WebView view, String url, String message,      
                String defaultValue, JsPromptResult result) {      
            Log.d(LOG_TAG,"onJsPrompt:" message);      
            mReusultText.setText("Prompt input is :" message);      
            result.confirm();      
            return super.onJsPrompt(view, url, message, message, result);      
        }      
    }      
}  


       

标签: Android

实例下载地址

android 与 JS 交互 例子源码下载

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警