我使用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);
}
}
爲webview設置webviewClient,應該有一個方法在它shouldOverrideUrlLoading(), – Redman
我試過這個..但現在PDF沒有被打開。 – adi
我不知道webview是否支持選項卡式內容。默認值是:它只在一個現有選項卡(主選項)上打開。你可以做的是在包含另一個webview的新活動中打開pdf。 – statosdotcom