2012-02-26 83 views
3

即時建立一個應用程序,該應用程序應該允許用戶在web視圖中點擊指向pdf文檔的鏈接並將其顯示在視圖中。 IM使用谷歌文檔查看PDF文件的工作,但我的問題是,我只是想方法爲PDF鏈接,而不是每一個環節的工作,我的繼承人代碼:android webview pdf查看

public class HelloWebViewActivity extends Activity 
{ 
WebView mWebView; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    mWebView = (WebView) findViewById(R.id.webview); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.loadUrl("https://nuigalway.blackboard.com/webapps/login/"); 
    mWebView.setWebViewClient(new HelloWebViewClient()); 

} 

private class HelloWebViewClient extends WebViewClient 
{ 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    { 
     String googleDocs = "https://docs.google.com/viewer?url="; 
     mWebView.loadUrl(googleDocs + url); 
     return true; 
    } 
} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) 
    { 
     mWebView.goBack(); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

} 

我認爲錯誤是在shouldOverrideUrlLoading方法。有什麼方法可以讓我只有在webview中點擊文件本身時才能打開pdf url?

回答

6

您的shouldOverrideUrlLoading邏輯錯誤。 url參數是被點擊的url。所以你想攔截任何的pdf鏈接,但讓webview通常處理所有其他的URL。

@Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    { 
     if (url.endsWith(".pdf")) 
     { 
      // Load "url" in google docs 
     } 
     else 
     { 
      // Load all other urls normally. 
      view.loadUrl(url); 
     } 

     return true; 
    } 
2

我覺得這是最簡單的代碼。試試這個:

private class HelpClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 

     if (url.endsWith(".pdf")){ 
      // Load "url" in google docs 
      String googleDocs = "https://docs.google.com/viewer?url="; 
      view.loadUrl(googleDocs + url); 

     } 
     else { 
      // Load all other urls normally. 
      view.loadUrl(url); 
     } 

//   view.loadUrl(url); 
     frameLayout.setVisibility(View.VISIBLE); 
     return true; 
    } 
} 
+0

Upvote,因爲它包含GoogleDocs鏈接,我不必自己查看它。 :) – CBanga 2017-08-03 14:30:43