-1

在我的應用程序,我使用的WebView顯示一些網站的數據,我想實現當用戶點擊任何鏈接一個新的屏幕(活動)上,其中一個功能將打開和URL的數據將顯示在該活動的網頁流量。我已經嘗試了的WebView客戶端設置爲網頁視圖,並覆蓋其onPageStarted,shouldOverrideUrlLoading方法,但他們都打開同一個屏幕內的URL。如何在webview url點擊打開新的屏幕?

這裏是我的代碼

webview.loadData(html, "text/html; charset=utf-8", "UTF-8"); 
    webview.setWebViewClient(webViewClient); 
} 
WebViewClient webViewClient = new WebViewClient() { 
    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     if (url.startsWith("http://")) { 
      Intent intent = new Intent(FirstActivity.this, WebActivity.class); 
      intent.putExtra("url", url); 
      startActivity(intent); 
     } 
    } 
    @Override 
    public void onPageFinished(WebView view, String url) { 
    } 

    @SuppressWarnings("deprecation") 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     return false; 
    } 

    @TargetApi(Build.VERSION_CODES.N) 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 

     return false; 
    } 

    @Override 
    public void onLoadResource(WebView view, String url) { 
     super.onLoadResource(view, url); 
    } 
}; 

這可怎麼實現的?任何幫助將不勝感激

+1

*我的代碼*的某些部分是不完整的,並且*任何建議*不是一個具體的問題。參見[如何創建一個最小的,完整的和可驗證的示例](http://stackoverflow.com/help/mcve)和[問]。 –

回答

0

試試這個:

@SuppressWarnings("deprecation") 
@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    if (url.startsWith("http://")) { 
     Intent intent = new Intent(FirstActivity.this, WebActivity.class); 
     intent.putExtra("url", url); 
     startActivity(intent); 
     return true; 
    } 
    return false; 
} 

@TargetApi(Build.VERSION_CODES.N) 
@Override 
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 

    String url = request.getUrl().toString(); 
    if (url.startsWith("http://")) { 
     Intent intent = new Intent(FirstActivity.this, WebActivity.class); 
     intent.putExtra("url", url); 
     startActivity(intent); 
     return true; 
    } 
    return false; 
} 
+0

不啓動WebActivity而是在加載web視圖是URL,它是在第一次活動 – User

+0

你確定網址以http://?可能是https:// – DucPV

0

試試這個。但是,你首先需要設置一個起始網站如google.com

import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.webkit.WebChromeClient; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 


public class MainActivity extends Activity { 

private WebView view; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    view = (WebView) this.findViewById(R.id.webView); 
    view.getSettings().setJavaScriptEnabled(true); 
    view.getSettings().setDomStorageEnabled(true); 
    view.setWebViewClient(new MyBrowser()); 
    view.loadUrl("[YOUR_WEBSITE]"); //try js alert 
    view.setWebChromeClient(new WebChromeClient()); // adding js alert support 

} 
private class MyBrowser extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if (url.startsWith("tel:") || url.startsWith("sms:") || url.startsWith("smsto:") || url.startsWith("mailto:") || url.startsWith("mms:") || url.startsWith("mmsto:") || url.startsWith("market:")) { 
      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
      startActivity(intent); 
      return true; 
     } 
     else { 
      view.loadUrl(url); 
      return true; 
     } 
    } 
} 

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK) && view.canGoBack()) { 
     view.goBack(); //method goback() 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
    } 
} 
0

如果鏈接是外部網站,你可以做這樣的事情:

webview.setWebViewClient(new LinkExtWebViewClient()); 

然後:

public class LinkExtWebViewClient extends WebViewClient { 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 

     if(Uri.parse(url).getHost().endsWith(" if your site is www.myurl.com, here you have to insert 'myurl.com' ")) { 
      return false; 
     } 
     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
     view.getContext().startActivity(intent); 
     return true; 
    } 
} 

讓我知道,如果它的工作原理:)