2012-02-26 221 views
3

ユーザーはwebview内のpdfドキュメントへのリンクをクリックしてビューに表示できるようにするアプリを構築します。イムpdfファイルを閲覧するGoogleドキュメントを使用しては動作しますが、私の問題は、私は唯一の方法は、PDFへのリンクではなく、すべてのリンク、HERESに私のコードのために仕事をしたいということです。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

関連する問題