2017-02-19 89 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

相关问题