`

ch018 Android webview

阅读更多

--------------------------------------------AndroidManifest.xml----------------------------------

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.ch18"

    android:versionCode="1"

    android:versionName="1.0" >

    <uses-sdk

        android:minSdkVersion="10"

        android:targetSdkVersion="15" />

    <!-- 网络访问权限 -->

    <uses-permission android:name="android.permission.INTERNET" />

    <application

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

        <activity

            android:name=".MainActivity"

            android:label="@string/title_activity_main" >

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

    </application>

</manifest>

--------------------------------------------activity_main.xml----------------------------------

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent" >

    <WebView

        android:layout_width="fill_parent"

        android:layout_height="fill_parent"

        android:id="@+id/wv"

        tools:context=".MainActivity" />

</RelativeLayout>

--------------------------------------------MainActivity.java--------------------------------------

package com.ch18;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.ProgressDialog;

import android.graphics.Bitmap;

import android.os.Bundle;

import android.os.Handler;

import android.util.Log;

import android.view.KeyEvent;

import android.webkit.JsPromptResult;

import android.webkit.JsResult;

import android.webkit.WebChromeClient;

import android.webkit.WebView;

import android.webkit.WebViewClient;

/**

 * 

 * 项目名称:com.ch18    

 * 类名称:MainActivity    

 * 类描述:webview

 * 创建人:方勇   

 * 创建时间:2012-11-20 下午10:10:05   

 * Copyright (c) 方勇-版权所有

 */

public class MainActivity extends Activity {

/* 重写回退按钮 */

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == event.KEYCODE_BACK && wv.canGoBack()) {

wv.goBack();

return true;

}

return super.onKeyDown(keyCode, event);

}

/* Android浏览器 */

private WebView wv;

/* 进度条,用户体验 */

private ProgressDialog pdialog;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

findViews();

init();

setListeners();

showResults();

}

/* 实例化UI */

private void findViews() {

wv = (WebView) findViewById(R.id.wv);

}

/* 初始化数据 */

private void init() {

wv.getSettings().setDefaultTextEncodingName("UTF-8");

// js可用

wv.getSettings().setJavaScriptEnabled(true);

// 滚动样式为无滚动条

wv.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);

}

/* 设置监听 */

private void setListeners() {

// 设置url跳转到wenview

wv.setWebViewClient(new MyWebViewClient());

// js处理

wv.setWebChromeClient(new MyWebChromClient());

// html与android交互,android注入到js里面

wv.addJavascriptInterface(new JSInterface(), "a07");

}

/* 显示结果 */

private void showResults() {

pdialog = new ProgressDialog(this);

// pdialog.show();

wv.loadUrl("file:///android_asset/webview.html");

}

/* 显示弹出对话框结果 */

private void showAlertResult(String message) {

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setTitle("alert");

builder.setMessage(message);

builder.show();

}

/* 处理url跳转 */

final class MyWebViewClient extends WebViewClient {

@Override

public void onPageStarted(WebView view, String url, Bitmap favicon) {

pdialog = ProgressDialog.show(MainActivity.thisnull"load.........");

super.onPageStarted(view, url, favicon);

}

@Override

public void onPageFinished(WebView view, String url) {

pdialog.dismiss();

super.onPageFinished(view, url);

}

@Override

public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {

super.onReceivedError(view, errorCode, description, failingUrl);

}

}

/* 处理javascript */

final class MyWebChromClient extends WebChromeClient {

@Override

public boolean onJsAlert(WebView view, String url, String message, JsResult result) {

super.onJsAlert(view, url, message, result);

if (!message.equals("")) {

showAlertResult(message);

//响应html,已经关闭

result.cancel();

return true;

}

return super.onJsAlert(view, url, message, result);

}

@Override

public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {

return super.onJsConfirm(view, url, message, result);

}

@Override

public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {

return super.onJsPrompt(view, url, message, defaultValue, result);

}

}

/* web与android交互 */

final class JSInterface {

private Handler handler = new Handler();

private int flag = 0;

public void onClick() {

handler.post(new Runnable() {

@Override

public void run() {

if (flag == 0) {

wv.loadUrl("javascript:changeImage01()");

flag = 1;

else {

wv.loadUrl("javascript:changeImage02()");

flag = 0;

}

}

});

}

// 供JS调用

public void logout(String str) {

Log.i("a07", str);

}

}

}

--------------------------------------------效果----------------------------------------------------

<!--EndFragment-->
  • 大小: 144.6 KB
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics