关于webview中网址的代码的位置是什么?

时间:2012-07-15 18:45:23

标签: android url browser webview

我想将此代码添加到我的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;     import android.app.Activity;     import android.os.Bundle;     import android.view.Window;     import android.webkit.WebChromeClient;     import android.webkit.WebView;     import 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;     import android.app.Activity;     import android.os.Bundle;     import android.view.Window;     import android.webkit.WebChromeClient;     import android.webkit.WebView;     import 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      - 语法错误,插入“;”完成声明      - 令牌上的语法错误,错位的构造

3 个答案:

答案 0 :(得分: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();
 }

答案 1 :(得分:0)

首先确保您的布局中包含webview。还要确保清单中有以下行。

<uses-permission android:name="android.permission.INTERNET" />

然后在你的onCreate中添加它。它可能不是最好的,但它就足够了。

答案 2 :(得分:0)

很抱歉,但是如果您已经覆盖了完全相同的方法,那么如何才能理解插入该代码的位置?看看它说的地方:

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
    view.loadUrl(url);
    return true;
}

如果您想更改上述行为,只需替换第一个代码段中指定的这两行。

我有一种感觉你并不真正了解anonynous inner classes,因为你也试图设置WebChromeClient两次 - 这没有多大意义。我建议你就此事做一些阅读。

此外,shouldOverrideUrlLoading(...)方法由WebViewClient定义,而不是WebChromeClient。这是一个简单查阅文档的案例。