没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
工作中用到了 webview 下面把 webview 相关的知识进行一
下总结:
首先要在 manifest.main 文件中创建一个 webview,然后再 activity 中定义这个 webview 然后
进行一下相关操作。
1、添加权限:AndroidManifest.xml 中必须使用许可"android.permission.INTERNET",否则会出
Web page not available 错误。
2、在要 Activity 中生成一个 WebView 组件:WebView webView = new WebView(this);
3、设置 WebView 基本信息:
如果访问的页面中有 Javascript,则 webview 必须设置支持 Javascript。
webview.getSettings().setJavaScriptEnabled(true);
触摸焦点起作用
requestFocus();
取消滚动条
this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
4 如果希望点击链接由自己处理,而不是新开 Android 的系统 browser 中响应该链接。给
WebView 添 加 一 个 事 件 监 听 对 象 ( WebViewClient) 并 重 写 其 中 的 一 些 方 法
shouldOverrideUrlLoading:对网页中超链接按钮的响应。 当按下某个连接时 WebViewClient
会调用这个方法,并传递参数:按下的 url
onLoadResource
onPageStart
onPageFinish
onReceiveError
onReceivedHttpAuthRequest
5、如果访问的页面中有 Javascript,则 webview 必须设置支持 Javascript ,否则显示空白页面。
Java 代码
webview.getSettings().setJavaScriptEnabled(true);
6、如果页面中链接,如果希望点击链接继续在当前 browser 中响应,而不是新开 Android 的系统 browser
中响应该链接,必须覆盖 webview 的 WebViewClient 对象:
Java 代码
1. mWebView.setWebViewClient(new WebViewClient(){
2. public boolean shouldOverrideUrlLoading(WebView view, String url) {
3. view.loadUrl(url);
4. return true;
5. }
6. });
上述方法告诉系统由我这个 WebViewClient 处理这个 Intent,我来加载 URL。点击一个链接的 Intent 是向上
冒泡的,shouldOverrideUrlLoading 方法 return true 表示我加载后这个 Intent 就消费了,不再向上冒泡了。
7、如果不做任何处理,在显示你的 Brower UI 时,点击系统“Back”键,整个 Browser 会作为一个整体“Back"
到其他 Activity 中,而不是希望的在 Browser 的历史页面中 Back。如果希望实现在历史页面中 Back,需
要在当前 Activity 中处理并消费掉该 Back 事件:
Java 代码
1. public boolean onKeyDown(int keyCode, KeyEvent event) {
2. if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
3. mWebView.goBack();
4. return true;
5. }
6. return super.onKeyDown(keyCode, event);
7. }
对于 Android 2.0 开始又多出了一种新的方法,对于 Activity 可以单独获取 Back 键的按下事件,直接重
写 onBackPressed 方法即可,代码如下
Java 代码
@Override
1、public void onBackPressed() {
2、 // 这里处理逻辑代码,该方法仅适用于 2.0 或更高版本的 sdk
3、 return ;
4、}
这里还有几个知识点:
1)为了让 WebView 从 apk 文件中加载 assets,Android SDK 提供了一个 schema,前缀为
"file:///android_asset/"。WebView 遇到这样的 schema,就去当前包中的 assets 目录中找内
容。如上面的"file:///android_asset/demo.html"
2)addJavascriptInterface 方法中要绑定的 Java 对象及方法要运行另外的线程中,不能运行在
构造他的线程中,这也是使用 Handler 的目的。
Webview 的两种显示网页的方法:
(1):webview.loadUrl(“www.baidu.com”);
public class WebviewTest extends Activity {
/** Called when the activity is first created. */
private WebView mWebView;
private Button bt1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView)findViewById(R.id.webview);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
bt1 = (Button)findViewById(R.id.Button01);
bt1.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
webview.loadUrl(“www.baidu.com”);
}
});
}
}
(2):自定义网页:Webview.data();
public class WebviewTest extends Activity {
/** Called when the activity is first created. */
private WebView mWebView;
private Button bt1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView)findViewById(R.id.webview);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
bt1 = (Button)findViewById(R.id.Button01);
bt1.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
String str = "asdas";
mWebView.loadData(
"<html><body>"+str+"</body></html>",
"text/html", "utf-8");
}
});
}
}
Webview 的常用方法实例:
Manifest.xml 中的代码:
加入权限:
<uses-permission android:name="android.permission.INTERNET" />
布局文件中的代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<WebView android:id="@+id/WebView01" android:layout_width=" fill_parent"
android:layout_height="fill_parent"></WebView>
</LinearLayout>
TestWebviewDemo 中的代码:
public class TestWebviewDemo extends Activity {
/** Called when the activity is first created. */
private static final String TAG = "TestWebviewDemo";
private WebView mWebView;
private Handler mHandler = new Handler();
private int mDensity;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.WebView01);
mWebView.getSettings().setAllowFileAccess(true);// 设置允许访问文件数据
mWebView.getSettings().setBuiltInZoomControls(true);// 设置支持缩放
mWebView.getSettings().setSavePassword(false); // 设置是否保存密码
// 设置支持 JavaScript 脚本
mWebView.getSettings().setJavaScriptEnabled(true);
// 设置支持各种不同的设备
mWebView
.getSettings()
.setUserAgentString(
"Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us)
AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10");
// 通过这个设置来执行加载 webview 网页时所要执行的一些方法
mWebView.setWebViewClient(new WebViewClient() {
// 新开页面时用自己定义的 webview 来显示,不用系统自带的浏览器来显示
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
// 当有新连接时使用当前的 webview 进行显示
view.loadUrl(url);
return super.shouldOverrideUrlLoading(view, url);
}
// 开始加载网页时要做的工作
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
//加载完成时要做的工作
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
// 加载错误时要做的工作
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
Log.d(TAG, "error=" + description);
Toast.makeText(TestWebviewDemo.this,
errorCode + "/" + description, Toast.LENGTH_LONG)
.show();
}
});
// 处理网页中的一些对话框信息(提示对话框,带选择的对话框,带输入的对话
框)
mWebView.setWebChromeClient(new WebChromeClient() {
// 对话框
public boolean onJsAlert(WebView view, String url, String message,
final JsResult result) {
// 构建一个 Builder 来显示网页中的 alert 对话框
Builder builder = new Builder(TestWebviewDemo.this);
builder.setTitle("提示对话框");
builder.setMessage(message);
builder.setPositiveButton(android.R.string.ok,
new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
result.confirm();
}
});
builder.setCancelable(false);
builder.create();
剩余25页未读,继续阅读
fire_fire_fire
- 粉丝: 93
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页