Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.app.example;
- import android.app.ProgressDialog;
- import android.content.Context;
- import android.content.Intent;
- import android.net.Uri;
- import android.net.http.SslError;
- import android.os.Bundle;
- import android.app.Activity;
- import android.os.Handler;
- import android.os.Message;
- import android.util.Log;
- import android.view.KeyEvent;
- import android.view.Menu;
- import android.view.View;
- import android.view.ViewGroup;
- import android.webkit.*;
- import android.widget.FrameLayout;
- import android.widget.ProgressBar;
- import android.app.ProgressDialog;
- public class ExampleMainActivity extends Activity {
- protected WebView mainWebView;
- private ProgressBar mProgress;
- private Context mContext;
- private WebView mWebview;
- private WebView mWebviewPop;
- private FrameLayout mContainer;
- private String url = "http://stage.example.com";
- private String target_url_prefix = "stage.example.com";
- public void onBackPressed(){
- if (mainWebView.isFocused() && mainWebView.canGoBack()) {
- mainWebView.goBack();
- }
- else {
- super.onBackPressed();
- finish();
- }
- }
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- //Get main webview
- mainWebView = (WebView) findViewById(R.id.mainWebView);
- //Progress Bar
- mProgress = (ProgressBar) findViewById(R.id.progressBar);
- //Cookie manager for the webview
- CookieManager cookieManager = CookieManager.getInstance();
- cookieManager.setAcceptCookie(true);
- //Get outer container
- mContainer = (FrameLayout) findViewById(R.id.webview_frame);
- //Settings
- WebSettings webSettings = mainWebView.getSettings();
- webSettings.setJavaScriptEnabled(true);
- webSettings.setAppCacheEnabled(true);
- webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
- webSettings.setSupportMultipleWindows(true);
- mainWebView.setWebViewClient(new MyCustomWebViewClient());
- mainWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
- mainWebView.setWebChromeClient(new MyCustomChromeClient());
- mainWebView.loadUrl("http://stage.example.com/home");
- mContext=this.getApplicationContext();
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.example_main, menu);
- return true;
- }
- private class MyCustomWebViewClient extends WebViewClient {
- @Override
- public boolean shouldOverrideUrlLoading(WebView view, String url) {
- String host = Uri.parse(url).getHost();
- //Log.d("shouldOverrideUrlLoading", url);
- if (host.equals(target_url_prefix))
- {
- // This is my web site, so do not override; let my WebView load
- // the page
- if(mWebviewPop!=null)
- {
- mWebviewPop.setVisibility(View.GONE);
- mContainer.removeView(mWebviewPop);
- mWebviewPop=null;
- }
- return false;
- }
- if(host.equals("m.facebook.com") || host.equals("www.facebook.com"))
- {
- return false;
- }
- // Otherwise, the link is not for a page on my site, so launch
- // another Activity that handles URLs
- Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
- startActivity(intent);
- return true;
- }
- @Override
- public void onReceivedSslError(WebView view, SslErrorHandler handler,
- SslError error) {
- Log.d("onReceivedSslError", "onReceivedSslError");
- //super.onReceivedSslError(view, handler, error);
- }
- }
- private class MyCustomChromeClient extends WebChromeClient
- {
- @Override
- public boolean onCreateWindow(WebView view, boolean isDialog,
- boolean isUserGesture, Message resultMsg) {
- mWebviewPop = new WebView(mContext);
- mWebviewPop.setVerticalScrollBarEnabled(false);
- mWebviewPop.setHorizontalScrollBarEnabled(false);
- mWebviewPop.setWebViewClient(new MyCustomWebViewClient());
- mWebviewPop.getSettings().setJavaScriptEnabled(true);
- mWebviewPop.getSettings().setSavePassword(false);
- mWebviewPop.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
- ViewGroup.LayoutParams.MATCH_PARENT));
- mContainer.addView(mWebviewPop);
- WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
- transport.setWebView(mWebviewPop);
- resultMsg.sendToTarget();
- return true;
- }
- @Override
- public void onCloseWindow(WebView window) {
- Log.d("onCloseWindow", "called");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement