当前位置:首页 » 操作系统 » webview显示源码

webview显示源码

发布时间: 2022-07-15 16:40:01

A. android webview加载某个网页,之后通过这个网页调到了另一个页面,怎么获取这个页面的网址和源码

mWebView.setWebViewClient(new WebViewClient(){
// 这个方法在用户试图点开页面上的某个链接时被调用
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url!=null) {
// 如果想继续加载目标页面则调用下面的语句
// view.loadUrl(url);
// 如果不想那url就是目标网址,如果想获取目标网页的内容那你可以用HTTP的API把网页扒下来。
}
// 返回true表示停留在本WebView(不跳转到系统的浏览器)
return true;
}
});

B. Android 在WebView中通过javascript获取网页源码,并在TextView或者在EditText中显示问题

应该是public void showSource(String html) {} 运行在非UI线程里面, 你尝试在这个方法里面使用handler.sendMessage() 然后在handler的handlerMessage 方法中更新TextView中的内容试试

C. webview 与html5有几种交互方式

对于android初学者应该都了解webView这个组件。之前我也是对其进行了一些简单的了解,但是在一个项目中不得不用webview的时候,发现了webview的强大之处,今天就分享一下使用webview的一些经验。

1、首先了解一下webview。
webview介绍的原文如下:A View that displays web pages. This class is the basis upon which you can roll your own web browser or simply display some online content within your Activity. It uses the WebKit rendering engine to display web pages and includes methods to navigate forward and backward through a history, zoom in and out, perform text searches and more.
从上面你应该了解到了基本功能,也就是显示网页。之所以我说webview功能强大是因为它和js的交互非常方便,很简单就可以实现。

2、webview能做什么?
①webView可以利用html做界面布局,虽然目前还比较少人这么使用,不过我相信当一些客户端需要复杂的图文(图文都是动态生成)混排的时候它肯定是个不错的选择。
②直接显示网页,这功能当然也是它最基本的功能。
③和js交互。(如果你的js基础比java基础好的话那么采用这种方式做一些复杂的处理是个不错的选择)。

3、如何使用webview?
这里直接用一个svn上取下的demo,先上demo后讲解。demo的结构图如下:

WebViewDemo.java

package com.google.android.webviewdemo;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;

/**
* Demonstrates how to embed a WebView in your activity. Also demonstrates how
* to have javascript in the WebView call into the activity, and how the activity
* can invoke javascript.
* <p>
* In this example, clicking on the android in the WebView will result in a call into
* the activities code in {@link DemoJavaScriptInterface#clickOnAndroid()}. This code
* will turn around and invoke javascript using the {@link WebView#loadUrl(String)}
* method.
* <p>
* Obviously all of this could have been accomplished without calling into the activity
* and then back into javascript, but this code is intended to show how to set up the
* code paths for this sort of communication.
*
*/
public class WebViewDemo extends Activity {

private static final String LOG_TAG = "WebViewDemo";

private WebView mWebView;

private Handler mHandler = new Handler();

@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webview);

WebSettings webSettings = mWebView.getSettings();
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(false);

mWebView.setWebChromeClient(new MyWebChromeClient());

mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");

mWebView.loadUrl("file:///android_asset/demo.html");
}

final class DemoJavaScriptInterface {

DemoJavaScriptInterface() {
}

/**
* This is not called on the UI thread. Post a runnable to invoke
* loadUrl on the UI thread.
*/
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
mWebView.loadUrl("javascript:wave()");
}
});

}
}

/**
* Provides a hook for calling "alert" from javascript. Useful for
* debugging your javascript.
*/
final class MyWebChromeClient extends WebChromeClient {
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
Log.d(LOG_TAG, message);
result.confirm();
return true;
}
}
}

demo.html

<html>
<script language="javascript">
/* This function is invoked by the activity */
function wave() {
alert("1");
document.getElementById("droid").src="android_waving.png";
alert("2");
}
</script>
<body>
<!-- Calls into the javascript interface for the activity -->
<a onClick="window.demo.clickOnAndroid()"><div style="width:80px;
margin:0px auto;
padding:10px;
text-align:center;
border:2px solid #202020;" >
<img id="droid" src="android_normal.png"/><br>
Click me!
</div></a>
</body>
</html>

main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/intro"
android:padding="4dip"
android:textSize="16sp"
/>

<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
/>

</LinearLayout>

4、如何交互?
①android如何调用js。
调用 形式:
mWebView.loadUrl("javascript:wave()");

其中wave()是js中的一个方法,当然你可以把这个方法改成其他的方法,也就是android调用其他的方法。
②js如何调用android。
调用形式:
<a onClick="window.demo.clickOnAndroid()">

代码中的“demo”是在android中指定的调用名称,即
mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");

代码中的clickOnAndroid()是“demo”对应的对象:new DemoJavaScriptInterface() 中的一个方法。
③双向交互。
当然是把前面的两种方式组合一下就可以了。

5、讲解demo。
现在你一定了解了android和js的交互了。是时候分析一些demo了,根据上面讲的你也应该比较清楚了。具体交互流程如下:
①点击图片,则在js端直接调用android上的方法clickOnAndroid();
②clickOnAndroid()方法(利用线程)调用js的方法。
③被②调用的js直接控制html。

个人总结:利用webView的这种方式在有些时候UI布局就可以转成相应的html代码编写了,而html布局样式之类有DW这样强大的工具,而且网上很多源码,很多代码片。在UI和视觉效果上就会节省很多时间,重复发明轮子没有任何意义。

D. 求Android全屏加载本地网页或全屏显示URL网 的源码

//用eclipse新建一个android项目然后将main里的代码换成这个,里面的URL要改一下,然后运行,在bin文件里就会有个.apk文件了,这个是全屏显示网页的!

package com.page.test;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Display;
import android.view.ViewGroup;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class TestActivity extends Activity {
/** Called when the activity is first created. */
WebView webView;
WebViewClient webViewClient;
Context context;
int screenHeight;
int screenWidth;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

context = this.getApplicationContext();

webView = new WebView(context);
webView.setWebChromeClient(new WebChromeClient());
webViewClient = new WebViewClient();
webView.setWebViewClient(webViewClient);

Display display = this.getWindowManager().getDefaultDisplay();
if (display.getHeight() < display.getWidth()) {
screenHeight = display.getWidth();
screenWidth = display.getHeight();
} else {
screenWidth = display.getWidth();
screenHeight = display.getHeight();
}

webView.setLayoutParams(new ViewGroup.LayoutParams(screenWidth, screenHeight));

webView.loadUrl("连接地址");

}

}

E. android webview怎么加载html源代码

1.String customHtml = "<html><body><font color='red'>hello !</font></body></html>";
首先写了一个html代码段,用来显示一段红色的字体;
2.webview.loadData(customHtml, "text/html", "UTF-8"); 加载定义的代码,并设定编码格式和字符集;
3.运行效果;如图:

F. webview中有没有办法获取到网页源代码,加载AJAX后的

webview 获取 网页的title

WebView mWebView = (WebView) findViewById(R.id.mwebview);
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
ExperimentingActivity.this.setTitle(view.getTitle());
}
});

getTitle
public String getTitle()

Get the title for the current page. This is the title of the current page until WebViewClient.onReceivedTitle is called.

返回:
The title for the current page.

下面这篇文章总结的比较全 ,但是 onReceivedTitle()方法在goback()之后无效。

如有转载,请声明出处: 时之沙: http://blog.csdn.net/t12x3456

Android WebView常见问题解决方案汇总:

就目前而言,如何应对版本的频繁更新呢,又如何灵活多变地展示我们的界面呢,这又涉及到了web app与native app之间孰优孰劣的争论. 于是乎,一种混合型的app诞生了,灵活多变的部分,如淘宝商城首页的活动页面,一集凡客诚品中我们都可以见到web 页面与native页面的混合,既利用了web app的灵活易更新,也借助了native app本身的效率.
当然,就会用到webview这样的一个控件,这里,我把自己使用过程中遇到的一些问题整理下来.

首先上张图对WebView进行一个基本的回顾:

以上思维导图原文件下载地址:

http://download.csdn.net/detail/t12x3456/6509195

然后看一下具体的问题及解决方案:

1.为WebView自定义错误显示界面:

覆写WebViewClient中的onReceivedError()方法:

[java] view
plain

/**
* 显示自定义错误提示页面,用一个View覆盖在WebView
*/
protected void showErrorPage() {
LinearLayout webParentView = (LinearLayout)mWebView.getParent();

initErrorPage();
while (webParentView.getChildCount() > 1) {
webParentView.removeViewAt(0);
}
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
webParentView.addView(mErrorView, 0, lp);
mIsErrorPage = true;
}
protected void hideErrorPage() {
LinearLayout webParentView = (LinearLayout)mWebView.getParent();

mIsErrorPage = false;
while (webParentView.getChildCount() > 1) {
webParentView.removeViewAt(0);
}
}

protected void initErrorPage() {
if (mErrorView == null) {
mErrorView = View.inflate(this, R.layout.online_error, null);
Button button = (Button)mErrorView.findViewById(R.id.online_error_btn_retry);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mWebView.reload();
}
});
mErrorView.setOnClickListener(null);
}
}

[java] view
plain

[java] view
plain

[java] view
plain

@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>mErrorView.setVisibility(View.VISIBLE);
<span style="white-space:pre"> </span>super.onReceivedError(view, errorCode, description, failingUrl);
}

2.WebView cookies清理:

[java] view
plain

CookieSyncManager.createInstance(this);
CookieSyncManager.getInstance().startSync();
CookieManager.getInstance().removeSessionCookie();

3.清理cache 和历史记录:

[java] view
plain

webView.clearCache(true);
webView.clearHistory();

4.判断WebView是否已经滚动到页面底端:

[java] view
plain

getScrollY()方法返回的是当前可见区域的顶端距整个页面顶端的距离,也就是当前内容滚动的距离.
getHeight()或者getBottom()方法都返回当前WebView 这个容器的高度
getContentHeight 返回的是整个html 的高度,但并不等同于当前整个页面的高度,因为WebView 有缩放功能, 所以当前整个页面的高度实际上应该是原始html 的高度再乘上缩放比例. 因此,更正后的结果,准确的判断方法应该是:
if(WebView.getContentHeight*WebView.getScale() == (webview.getHeight()+WebView.getScrollY())){ //已经处于底端 }

5.URL拦截:

Android WebView是拦截不到页面内的fragment跳转的。但是url跳转的话,又会引起页面刷新,H5页面的体验又下降了。只能给WebView注入JS方法了。

6.处理WebView中的非超链接请求(如Ajax请求):

有时候需要加上请求头,但是非超链接的请求,没有办法再shouldOverrinding中拦截并用webView.loadUrl(String url,HashMap headers)方法添加请求头

目前用了一个临时的办法解决:

首先需要在url中加特殊标记/协议, 如在onWebViewResource方法中拦截对应的请求,然后将要添加的请求头,以get形式拼接到url末尾

在shouldInterceptRequest()方法中,可以拦截到所有的网页中资源请求,比如加载JS,图片以及Ajax请求等等

G. android中使用webview来显示内容,点击内容里的号码调用拨号器拨号,但是少了前一位数字

传过去前看一下号码是否正确。
不知道你那个实现思路是什么,正常如果按钮存在于html里面,那么就用js调用android中的方法,去传电话号码到android方法中,再调用系统的打电话。
正常如果js传过来的电话号码没问题,那么就不会发生这种事情。少了前一位的情况,是具体怎么实现的?

H. 如何使用webView打开一个网址

如何将点击链接后的网页也显示呢,于是边Google边查看Android文档,找到找到了一个方法,以下使用源码解释。

package demo.androidyue.webview;

import android.app.Activity;

import android.os.Bundle;

import android.webkit.WebView;

import android.webkit.WebViewClient;

public class WebViewDemoActivity extends Activity {

private WebView webView;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

//初始化WebView

this.initWebView();

}

/*

* 初始化WebView

*/

private void initWebView(){

//从布局文件中扩展webView

this.webView=(WebView)this.findViewById(R.id.webview);

//为WebView设置WebViewClient处理某些操作

this.webView.setWebViewClient(new webViewClient());

//加载地址

this.webView.loadUrl("");

}

class webViewClient extends WebViewClient{

//重写shouldOverrideUrlLoading方法,使点击链接后不使用其他的浏览器打开。

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

//如果不需要其他对点击链接事件的处理返回true,否则返回false

return true;

}

}

热点内容
安卓手机硬件怎么升级 发布:2025-01-22 12:55:25 浏览:220
可编程脉冲电源 发布:2025-01-22 12:49:22 浏览:829
欧规墨规美规中东哪个配置高 发布:2025-01-22 12:48:00 浏览:777
安卓机怎么用不了多久 发布:2025-01-22 12:47:44 浏览:761
安卓怎么录屏别人直播 发布:2025-01-22 12:35:20 浏览:385
1030怎么配置电脑 发布:2025-01-22 12:35:19 浏览:89
sql数据库的端口 发布:2025-01-22 12:20:02 浏览:362
安卓最终幻想8怎么设置中文 发布:2025-01-22 12:19:23 浏览:651
怎么查电脑配置和网络 发布:2025-01-22 12:19:16 浏览:586
linuxsnmp查看 发布:2025-01-22 12:17:49 浏览:37