2017-02-19 87 views
1

我使用android webview製作了一個android應用程序。這個應用程序實際上是一個包含不同課程的移動網站。移動應用程序菜單鏈接在瀏覽器中打開 - Android

在網站: 當我打開課程頁面時,有一個課程pdf鏈接,當點擊時打開一個新的選項卡。

在Android應用程序 當在移動應用程序中打開網站時,課程鏈接(在菜單中)本身在瀏覽器中打開。

我的要求是課程頁面中的pdf鏈接應該在新標籤頁中打開。

下面是我試過的代碼。

MainActivity.java

package com.education.xxxxxxx; 

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.util.Log; 
import android.view.View; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

import java.io.UnsupportedEncodingException; 
import java.net.URLEncoder; 

public class MainActivity extends AppCompatActivity { 
    private static final String TAG = ""; 
    private WebView myWebView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     myWebView = (WebView)findViewById(R.id.webview); 
     WebSettings webSettings = myWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
//  myWebView.loadUrl("http://xxxxxxx.com/"); 
//  myWebView.setWebViewClient(new WebViewClient()); 
     String myPdfUrl = "http://xxxxxxx.com/"; 
     if(myPdfUrl.endsWith(".pdf")){ 
     String googledocs="https://docs.google.com/viewer?url="; 
     String pdf_url=googledocs+myPdfUrl; 
      myWebView.loadUrl(pdf_url); 
     } 
     else{ 
      myWebView.loadUrl(myPdfUrl); 
     } 

    } 

    @Override 
    public void onBackPressed() { 
     if(myWebView.canGoBack()){ 
      myWebView.goBack(); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     // getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 


     return super.onOptionsItemSelected(item); 
    } 
} 
+0

爲webview設置webviewClient,應該有一個方法在它shouldOverrideUrlLoading(), – Redman

+0

我試過這個..但現在PDF沒有被打開。 – adi

+0

我不知道webview是否支持選項卡式內容。默認值是:它只在一個現有選項卡(主選項)上打開。你可以做的是在包含另一個webview的新活動中打開pdf。 – statosdotcom

回答

0

的WebView不支持選項卡。全部只在唯一的一個現有標籤上打開,即主標籤。你可以做的是在一個包含另一個WebView的新活動中打開pdf。

0

的PDF不會直接打開你可以使用谷歌文檔查看器

WebView webview = (WebView) findViewById(R.id.webview); 
webview.getSettings().setJavaScriptEnabled(true); 
String pdf = "http://www.adobe.com/devnet/acrobat/pdfs/pdf_open_parameters.pdf"; 
webview.loadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url=" + pdf); 

看看this

+0

從OP:「頁面應該在新選項卡中打開」...。然而:OP會隨時通知您答案,不需要通過評論提醒他,請原諒。 – statosdotcom

+0

@Redman我試過這個,但現在不打開頁面。 – adi

相關問題