我相信大家都知道.设置WebView需要创建Webview浏览器客户端,设置属性并将资源加载到浏览器客户端.我已经创建了几个Android应用程序.
我现在想要尝试的是横向扫描不同的网络资源.想象一下一个网址的主要主页,另一个网址的类别页面和另一个网址的搜索页面.我想创建一个UI构造,允许从主要主页url视图滑动到显示类别url的视图,然后是另一个用搜索资源显示视图的滑动(想想新的android市场UI - 向左滑动显示类别) .
我已经阅读了ViewFlipper和几个帖子,但是我无法找到如何将浏览器实例化与视图翻转/滑动集成的综合示例.
问题:有人可以提供一个示例,可以执行上述的一些变化和/或提供一个示例的链接,该示例显示浏览器实例化与Web视图翻转/滑动.
随意纠正我建议的实现...可能有一个更好的方法来做到这一点,我还没有考虑...
我重写webViewClient.shouldInterceptRequest()返回资产文件夹中的图像和js文件等常用资源.但这可用于android> = 3..还有用于android 2.x的替代方法
我发现onLoadResource()提供类似的行为,但其返回类型是无效的
当我打电话时,WebView#loadUrl我希望我只能打一个WebViewClient#onPageFinished电话而不WebViewClient#shouldOverrideUrlLoading打电话.但是,我得到一个WebViewClient#shouldOverrideUrlLoading(我通过始终调用WebView#loadUrl并返回true来实现)然后WebViewClient#onPageFinished使用相同的URL 进行两次调用.
我正在加载的页面使用了很多ajax请求.ajax请求是否会调用WebViewClient?我的页面中没有任何meta-refreshes.
这非常令人沮丧.难道我做错了什么?
我有一个webview,我将onTouchListener设置为on以便捕获实际视图上的滑动事件。
我还在WebView上设置了WebViewClient,以便在单击Webview内的某些链接时覆盖“网址加载”。
问题是OnTouch处理程序总是始终首先接收操作,即使我返回false(如果不是轻扫),它也不会将touch事件传递给内部html内容,因此从不实际单击链接。如果我删除了onTouchListener,它可以正常工作。是否可以通过某种方式将触摸事件传递给内容?
似乎WebInClcept方法(如shouldInterceptRequest(),onPageStarted()和shouldOverrideUrlLoading())仅侦听导致WebView加载新页面的URL更改.有没有办法在WebView上检测片段ID的URL更改,即index.html#fragment_id?
onNewPicture()的文档只说:
通知听众图片已更改
我的问题是:图片什么时候改变?
我注意到有些网页生成了几十个onNewPicture(),所以很明显,在WebView上渲染页面的过程中,"图片"会多次发生变化.
是什么让WebView图片发生变化?
我没有看到任何生成少于2个onNewPicture()调用的页面页面,因此对于任何给定的HTML页面,onNewPicture()是否保证被多次调用?
我想检查某个 URL 是否已完成加载,然后加载另一个 URL,如果该新 url 已完成加载,请执行某些操作,如何?
我知道如何检查某个 URL 是否已完成加载,如下所示:
webView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
// do stuff here
}
});
Run Code Online (Sandbox Code Playgroud)
但我想要的是:
if url1 finished loading:
load url2
if url2 finished loading:
//do some stuff here
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我有这个webview代码,我希望能够在用户点击PDF链接时打开PDF文件.这是代码,你能告诉我我必须把它放在PDF区域吗?我已经尝试了很多不同的方法,我根本无法查看PDF.谢谢您的帮助.
webview.setWebViewClient ( new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// do your handling codes here, which url is the requested url
// probably you need to open that url rather than redirect:
if (url.startsWith("tel:")) {
startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(url)));
} else if (url.startsWith("mailto:")) {
url = url.replaceFirst("mailto:", "");
url = url.trim();
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("plain/text").putExtra(Intent.EXTRA_EMAIL,
new String[]{url});
startActivity(i);
} else if (url.startsWith("geo:")) {
try {
} catch (Exception e) {
System.out.println(e);
}
} else if …Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中有这个代码:
public class Home extends Activity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
final ProgressDialog progressBar;
if(isOnline()){
WebView webView = (WebView) findViewById(R.id.home_web);
webView.setBackgroundColor(Color.parseColor(getString(R.color.colore_bg)));
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setPluginsEnabled(true);
webView.setWebViewClient(new MyWebViewClient());
progressBar = ProgressDialog.show(this,getString(R.string.caricamento),getString(R.string.attendere));
webView.setWebViewClient(new WebViewClient(){
public void onPageFinished(WebView view, String url) {
if (progressBar.isShowing()) {
progressBar.dismiss();
}
}
});
webView.loadUrl("http://www.mysite.com/android.php");
}else{
Toast.makeText(this,getString(R.string.no_connessione),Toast.LENGTH_LONG).show();
}
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
System.out.println("here");
if (Uri.parse(url).getHost().equals("mysite.com")) {
// This is my web site, so do not override; …Run Code Online (Sandbox Code Playgroud) 我想加载一个网页.
private class MyJavaScriptInterface {
private MyJavaScriptInterface () {
}
public void setHtml(String contentHtml) {
if (contentHtml != null && contentHtml.trim().length() > 0) {
//Do something
}
}
}
private WebViewClient webViewClient = new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:window.ResponseChecker.setHtml"
+ "(document.body.innerHTML);");
if (progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
}
public void onReceivedSslError(WebView view, SslErrorHandler handler,
SslError error) {
handler.proceed();
}
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Log.e("ProcessPayment", …Run Code Online (Sandbox Code Playgroud)