android1.5---2.1实现js调摄像头,调Java代码
package com.iame.mybrowser;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.graphics.Bitmap;import android.os.Bundle;import android.util.Log;import android.view.KeyEvent;import android.view.LayoutInflater;import android.view.View;import android.view.Window;import android.view.View.OnClickListener;import android.webkit.JsPromptResult;import android.webkit.JsResult;import android.webkit.URLUtil;import android.webkit.WebChromeClient;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class MyBrowser extends Activity { private static final String DEBUG_TAG ="MyBrowser";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//用title bar做进度条getWindow().requestFeature(Window.FEATURE_PROGRESS);setContentView(R.layout.main);//获取WebViewfinal WebView webView=(WebView)findViewById(R.id.browser);//获取URL,也就是http://www.baidu.com这方面的地址final EditText text=(EditText)findViewById(R.id.url);//确定按钮Button go=(Button)findViewById(R.id.go);//设置支持javaScriptwebView.getSettings().setJavaScriptEnabled(true);//WebViewClient负责帮助WebView处理各种通知、请求事件等。想相当于程序嵌套了一个浏览器.浏览器里面的按钮支持事件,就需要WebView。webView.setWebViewClient(new WebViewClient(){//页面加载完成时要做的事件@Overridepublic void onPageFinished(WebView view, String url) {super.onPageFinished(view, url);}//页面加载时要做的事件@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {text.setText(url);super.onPageStarted(view, url, favicon);}});//WebChromeClient负责帮助WebView处理Javascript的对话框,网站图标,网站title,加载进度等。webView.setWebChromeClient(new WebChromeClient(){//1.弹出的对话框@Overridepublic boolean onJsAlert(WebView view, String url, String message,final JsResult result) {AlertDialog.Builder b2 = new AlertDialog.Builder(MyBrowser.this);b2.setTitle(R.string.tite1);b2.setMessage(message);b2.setPositiveButton(R.string.ok,new AlertDialog.OnClickListener() {public void onClick(DialogInterface dialog, int which) {//按确定后腰执行的代码,这句很重要result.confirm();//MyBrowser.this.finish();}});//设置对话框是否取消,默认是可以取消的。//这种方式按还回键,齐作用//b.setCancelable(true);//这种方式按还回键,不齐作用b2.setCancelable(false);//创建对话框,才能显示b2.create();b2.show();//如果还回的是flase将会多弹出窗口,不是我们想要的结果return true;};//2.对话框@Overridepublic boolean onJsConfirm(WebView view, String url, String message,final JsResult result) {AlertDialog.Builder b3 = new AlertDialog.Builder(MyBrowser.this);b3.setTitle(R.string.tite2);b3.setMessage(message);b3.setPositiveButton(R.string.ok,new AlertDialog.OnClickListener() {public void onClick(DialogInterface dialog, int which) {result.confirm();}});b3.setNegativeButton(R.string.no,new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {//按取消做的事件result.cancel();}});b3.setCancelable(false);b3.create();b3.show();return true;};//3.输入对话框@Overridepublic boolean onJsPrompt(WebView view, String url, String message,String defaultValue, final JsPromptResult result) {//获得环境参数final LayoutInflater factory = LayoutInflater.from(MyBrowser.this);//导入预先设置的输入设置final View v = factory.inflate(R.layout.javascript_prompt_dialog, null);//获得输入框标题并设置输入框标题((TextView) v.findViewById(R.id.prompt_message_text)).setText(message);//获得输入框平设置默认值((EditText) v.findViewById(R.id.prompt_input_field)).setText(defaultValue);AlertDialog.Builder b4 = new AlertDialog.Builder(MyBrowser.this);b4.setTitle(R.string.tite3);b4.setView(v);b4.setPositiveButton(R.string.ok,new AlertDialog.OnClickListener() {public void onClick(DialogInterface dialog, int which) {String value = ((EditText) v.findViewById(R.id.prompt_input_field)).getText().toString();result.confirm(value);}});b4.setNegativeButton(R.string.no,new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {result.cancel();}});b4.setOnCancelListener(new DialogInterface.OnCancelListener() {public void onCancel(DialogInterface dialog) {result.cancel();}});b4.show();return true;};//设置网页加载的进度条@Overridepublic void onProgressChanged(WebView view, int newProgress) {MyBrowser.this.getWindow().setFeatureInt(Window.FEATURE_PROGRESS, newProgress * 100);super.onProgressChanged(view, newProgress);}//设置应用程序的标题title@Overridepublic void onReceivedTitle(WebView view, String title) {MyBrowser.this.setTitle(title);super.onReceivedTitle(view, title);}});//确定搜索按钮go.setOnClickListener(new OnClickListener(){public void onClick(View v){try {//取得编辑框中我们输入的内容 String url = text.getText().toString(); //判断输入的内容是不是网址 if ( URLUtil.isNetworkUrl(url) ){ //装载网址 webView.loadUrl(url);} else { text.setText("输入网址错误,请重新输入");}}catch (Exception e) {Log.e(DEBUG_TAG, e.toString());}}});webView.loadUrl("file:///android_asset/index.html");} //返回上一页public boolean onKeyDown(int keyCode, KeyEvent event) {WebView mWebView=(WebView)findViewById(R.id.browser);if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {mWebView.goBack();return true;}return super.onKeyDown(keyCode, event);}}<script type="text/javascript">
function onAlert(){
alert("This is a alert sample");
}
function onCamera(){
//var personaldata = window.PersonalData.getPersonalData();
var b=confirm("are you sure go to Camera?");
//alert("your choice is "+b);
}
function onPrompt33(){
var b1=prompt("please input your password","yangguangfu");
alert("your input is "+b1);
}
</script>
<pre>
<input type="button" value="Yang_Alert" onclick="onAlert()"/>
<input type="button" id="Personaldata" value="打开相机" onclick="onCamera()"/>
<input type="button" value="Yang_prompt" onclick="onPrompt33()"/>
<a href="http://www.google.com" />Google</a>
</pre>
</html>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.iame.mybrowser" android:versionCode="1"
android:versionName="1.0.0">
<uses-permission android:name="android.permission.INTERNET" />
<application android:icon="@drawable/icon" android:label="MyBroswer">
<activity android:label="MyBrowser" android:name="MyBrowser">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="3" /><!-- 版本标识 -->
<uses-permission android:name="android.permission.INTERNET"/><!-- 访问网络权限 -->
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- 调用相机权限 -->
<uses-permission android:name="android.permission.CAMERA"/>
</manifest>
?
1 楼 xiuqi0844 2012-03-01 哥哥,你从其他地方抄之前,请先运行下!谢谢!