这段关于 url 的代码在 webview 中的位置是啥?
Posted
技术标签:
【中文标题】这段关于 url 的代码在 webview 中的位置是啥?【英文标题】:What's the place of this code about urls in webview?这段关于 url 的代码在 webview 中的位置是什么? 【发布时间】:2012-07-14 17:28:29 【问题描述】:我想将此代码添加到我的 java 文件中:
webView.setWebViewClient(new WebViewClient()
public boolean shouldOverrideUrlLoading(WebView view, String url)
if (url != null && url.startsWith("http://"))
view.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
else
return false;
但我不知道在哪里。这是我的java文件: 包sherdle.donald.duck.app; 导入android.app.Activity; 导入android.os.Bundle; 导入android.view.Window; 导入 android.webkit.WebChromeClient; 导入 android.webkit.WebView; 导入 android.webkit.WebViewClient; 公共类 WebPageLoader 扩展了 Activity WebView webview;
final Activity activity = this;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.main);
webview = (WebView) findViewById(R.id.webview);
webview.getSettings().setjavascriptEnabled(true);
webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webview.getSettings().setSupportMultipleWindows(true);
webview.getSettings().setPluginsEnabled(true);
webview.setWebChromeClient(new WebChromeClient()
public void onProgressChanged(WebView view, int progress)
activity.setTitle("Loading...");
activity.setProgress(progress * 100);
if(progress == 100)
activity.setTitle(R.string.app_name);
);
webview.setWebViewClient(new WebViewClient()
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
view.loadUrl(url);
return true;
);
webview.loadUrl("http://www.sherdle.com/apphosting/dd");
@Override
public void onBackPressed ()
if(webview.canGoBack()) webview.goBack();
else super.onBackPressed();
我是 android 新手,我所做的每一件事都需要很多帮助。感谢您的帮助。
我现在已经有了这个: 包sherdle.donald.duck.app; 导入android.app.Activity; 导入android.os.Bundle; 导入android.view.Window; 导入 android.webkit.WebChromeClient; 导入 android.webkit.WebView; 导入 android.webkit.WebViewClient; 公共类 WebPageLoader 扩展了 Activity WebView webview;
final Activity activity = this;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.main);
webview = (WebView) findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webview.getSettings().setSupportMultipleWindows(true);
webview.getSettings().setPluginsEnabled(true);
webview.setWebChromeClient(new WebChromeClient()
public void onProgressChanged(WebView view, int progress)
activity.setTitle("Loading...");
activity.setProgress(progress * 100);
if(progress == 100)
activity.setTitle(R.string.app_name);
);
webview.setWebViewClient(new WebViewClient()
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
view.loadUrl(url);
return true;
);
webview.setWebChromeClient(new WebChromeClient()
public boolean shouldOverrideUrlLoading(WebView view, String url)
if (url != null && url.startsWith("http://"))
view.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
else
return false;
webview.loadUrl("http://www.sherdle.com/apphosting/dd");
@Override
public void onBackPressed ()
if(webview.canGoBack()) webview.goBack();
else super.onBackPressed();
但我的 LoadUrl 行出现此错误: 此行有多个标记 - 语法错误,插入“AssignmentOperator Expression”完成 表达 - 语法错误,插入“;”完成 FieldDeclaration - 语法错误,插入“)”完成MethodInvocation - 语法错误,插入“”完成ClassBody - 语法错误,插入“;”完成声明 - 标记的语法错误,错误的构造
【问题讨论】:
【参考方案1】:这样使用
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.main);
webview = (WebView) findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webview.getSettings().setSupportMultipleWindows(true);
webview.getSettings().setPluginsEnabled(true);
webview.setWebChromeClient(new WebChromeClient()
public void onProgressChanged(WebView view, int progress)
activity.setTitle("Loading...");
activity.setProgress(progress * 100);
if(progress == 100)
activity.setTitle(R.string.app_name);
);
webview.setWebViewClient(new WebViewClient()
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
view.loadUrl(url);
return true;
);
webview.setWebChromeClient(new WebChromeClient()
public boolean shouldOverrideUrlLoading(WebView view, String url)
if (url != null && url.startsWith("http://"))
view.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
else
return false;
);
webview.loadUrl("http://www.sherdle.com/apphosting/dd");
@Override
public void onBackPressed ()
if(webview.canGoBack()) webview.goBack();
else super.onBackPressed();
【讨论】:
这个应该是这样的public class yourActivity extends Activity above code
我仍然收到错误:此行有多个标记 - 上下文类型中的方法 startActivity(Intent) 不适用于参数 (Intent) - 行断点:WebPageLoader [行:54] - shouldOverrideUrlLoading (WebView, String) 以及:此行的多个标记 - Intent 无法解析为变量 - Uri 无法解析 - Intent 无法解析为类型
它工作!谢谢!我还有一个问题:如果我想添加更多,那么一个 url 以...开头...如何?
一个以上的 URL 是什么意思?你能解释一下吗?最好将它作为一个单独的问题发布。并接受答案,以便完成此问题..【参考方案2】:
首先确保您的布局中有 webview。还要确保清单中有以下行。
<uses-permission android:name="android.permission.INTERNET" />
然后你将它添加到你的 onCreate 中。它可能不是最好的,但已经足够了。
【讨论】:
是的,我已经连接到互联网,并且我的 webview 已经可以正常工作了。但是我的 OneCreate 到底在哪里?你能把代码复制到我的java文件中吗?感谢您的帮助。【参考方案3】:抱歉,如果你已经重写了完全相同的方法,你怎么会不明白在哪里插入那段代码呢?看看它在哪里写的:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
view.loadUrl(url);
return true;
如果你想改变上面的行为,只需替换第一个代码sn-p中指定的这两行即可。
我感觉你并不真正理解 anonynous inner classes,因为你还尝试设置 WebChromeClient
两次 - 这真的没有意义。我建议你阅读一下这件事。
此外,shouldOverrideUrlLoading(...)
方法由 WebViewClient
定义,而不是 WebChromeClient
。这是一个简单查阅文档的案例。
【讨论】:
以上是关于这段关于 url 的代码在 webview 中的位置是啥?的主要内容,如果未能解决你的问题,请参考以下文章