您的位置:首页 > 移动开发 > Android开发

Android 技术专题系列之八 -- 浏览器及web widget

2009-06-23 15:47 501 查看
浏览器相关的代码主要位于以下三个位置:

1. external/webkit

该目录下存放开源的Webkit c/c++代码。

2. frameworks/base/core/java/android/webkit

external/webkit的java封装。提供了用于开发浏览器应用的java
类库。这些类库使用JNI访问external/webkit中相应的功能。

3. packages/apps/Browser/src/com/android/browser

浏览器应用。

web widget 目前种类比较多,比较流行的有Symbian, apple
widget等。下图中的widget基于android示例HelloActivity,使用一个WebView去调用一个简单的widget。

值得注意的是,web widget中的javaScrip 可以调用java的函数,反之亦然。这将极大扩展web
widget的功能。



~~~~

1. widget的index.html文件内容。此widget 利用google service
API,实现语言翻译功能。将此文件拷贝到emulator上/data目录下。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html
xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Google
Translator</title>

<meta name="generator" content="BBEdit 8.6"
/>

<script
src="main.js"></script>

<script type="text/javascript"
src="http://www.google.com/jsapi"></script>

<script type="text/javascript">

google.load("language", "1");

function
initialize() {

var text = document.getElementById("text").value;

var tlang = document.getElementById("tlang").value

google.language.detect(text, function(result) {

if (!result.error &&
result.language) {

google.language.translate(text, result.language, tlang,

function(result) {

var translated = document.getElementById("translation");

if (result.translation) {

translated.value = result.translation;

}

});

}

});

}

</script>

</head>

<body>

<body>

Auto detect source language and translate
to:<br/>

<select id="tlang">

<option value="zh-TW">Chinese
Trad</option>

<option value="zh-CN">Chinese
Simpl</option>

<option
value="en">English</option>

<option
value="fi">Finnish</option>

<option
value="fr">French</option>

<option
value="de">German</option>

<option
value="it">Italian</option>

<option
value="ja">Japanese</option>

<option
value="ko">Korean</option>

<option
value="pt">Portuguese</option>

<option
value="es">Spanish</option>

</select><br/>

<textarea id="text" name="query"
height="100px">Enter string
here</textarea>
<BUTTON TYPE=BUTTON
onClick="initialize()">

<I>GO</I></BUTTON><br/>

<textarea id="translation" name="results"
height="100px">Results</textarea><br/>

Copy from the above text box and paste the text
where ever. If there is an update, it will be here:
<a
href="http://www.waiseto.com/2009/01/simple-google-translator-widget-for-s60.html">link</a>
Enjoy W. Seto

</body>

</html>

~~~~~~~~~~~~~~~~~~

2. 调用widget的android程序代码

package com.example.android.hellowebview;

import android.app.Activity;

import android.os.Bundle;

import android.webkit.WebView;

import android.webkit.WebViewClient;

import android.view.*;

import com.example.android.hellowebview.R;

public class HelloWebView extends Activity {

@Override

public void
onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// Set the layout for this activity. You can find
it

// in res/layout/hello_activity.xml

setContentView(R.layout.hello_activity);

WebView wv;

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

wv.getSettings().setJavaScriptEnabled(true);

wv.loadUrl("file:///data/index.html");

}

}

~~~~~~~~~

3. 在AndroidManifest.xml 中得加入如下行,否则,此程序不能访问Internet。

<uses-permission
android:name="android.permission.INTERNET" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: