View difference between Paste ID: KdzfhqDJ and xAkp3xaF
SHOW: | | - or go back to the newest paste.
1
package com.app.example;
2
3
import android.app.ProgressDialog;
4
import android.content.Context;
5
import android.content.Intent;
6
import android.net.Uri;
7
import android.net.http.SslError;
8
import android.os.Bundle;
9
import android.app.Activity;
10
import android.os.Handler;
11
import android.os.Message;
12
import android.util.Log;
13
import android.view.KeyEvent;
14
import android.view.Menu;
15
import android.view.View;
16
import android.view.ViewGroup;
17
import android.webkit.*;
18
import android.widget.FrameLayout;
19
import android.widget.ProgressBar;
20
import android.app.ProgressDialog;
21
22-
public class GigmorMainActivity extends Activity {
22+
public class ExampleMainActivity extends Activity {
23
24
    protected WebView mainWebView;
25
    private ProgressBar mProgress;
26
    private Context mContext;
27
    private WebView mWebview;
28
    private WebView mWebviewPop;
29
    private FrameLayout mContainer;
30
31
    private String url = "http://stage.example.com";
32
    private String target_url_prefix = "stage.example.com";
33
34
35
    public void onBackPressed(){
36
37
        if (mainWebView.isFocused() && mainWebView.canGoBack()) {
38
            mainWebView.goBack();
39
        }
40
        else {
41
            super.onBackPressed();
42
            finish();
43
        }
44
    }
45
46
    @Override
47
    protected void onCreate(Bundle savedInstanceState) {
48
        super.onCreate(savedInstanceState);
49
        setContentView(R.layout.activity_main);
50
51
        //Get main webview
52
        mainWebView = (WebView) findViewById(R.id.mainWebView);
53
54
        //Progress Bar
55
        mProgress = (ProgressBar) findViewById(R.id.progressBar);
56
57
        //Cookie manager for the webview
58
        CookieManager cookieManager = CookieManager.getInstance();
59
        cookieManager.setAcceptCookie(true);
60
61
        //Get outer container
62
        mContainer = (FrameLayout) findViewById(R.id.webview_frame);
63
64
        //Settings
65
        WebSettings webSettings = mainWebView.getSettings();
66
        webSettings.setJavaScriptEnabled(true);
67
        webSettings.setAppCacheEnabled(true);
68
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
69
        webSettings.setSupportMultipleWindows(true);
70
71
        mainWebView.setWebViewClient(new MyCustomWebViewClient());
72
        mainWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
73
74
        mainWebView.setWebChromeClient(new MyCustomChromeClient());
75
        mainWebView.loadUrl("http://stage.example.com/home");
76
77
        mContext=this.getApplicationContext();
78
79
    }
80
81
82
    @Override
83
    public boolean onCreateOptionsMenu(Menu menu) {
84
        // Inflate the menu; this adds items to the action bar if it is present.
85
        getMenuInflater().inflate(R.menu.example_main, menu);
86
        return true;
87
    }
88
89
    private class MyCustomWebViewClient extends WebViewClient {
90
        @Override
91
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
92
            String host = Uri.parse(url).getHost();
93
            //Log.d("shouldOverrideUrlLoading", url);
94
            if (host.equals(target_url_prefix))
95
            {
96
                // This is my web site, so do not override; let my WebView load
97
                // the page
98
                if(mWebviewPop!=null)
99
                {
100
                    mWebviewPop.setVisibility(View.GONE);
101
                    mContainer.removeView(mWebviewPop);
102
                    mWebviewPop=null;
103
                }
104
                return false;
105
            }
106
107
            if(host.equals("m.facebook.com") || host.equals("www.facebook.com"))
108
            {
109
                return false;
110
            }
111
            // Otherwise, the link is not for a page on my site, so launch
112
            // another Activity that handles URLs
113
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
114
            startActivity(intent);
115
            return true;
116
        }
117
118
        @Override
119
        public void onReceivedSslError(WebView view, SslErrorHandler handler,
120
                                       SslError error) {
121
            Log.d("onReceivedSslError", "onReceivedSslError");
122
            //super.onReceivedSslError(view, handler, error);
123
        }
124
125
    }
126
127
    private class MyCustomChromeClient extends WebChromeClient
128
    {
129
130
        @Override
131
        public boolean onCreateWindow(WebView view, boolean isDialog,
132
        boolean isUserGesture, Message resultMsg) {
133
            mWebviewPop = new WebView(mContext);
134
            mWebviewPop.setVerticalScrollBarEnabled(false);
135
            mWebviewPop.setHorizontalScrollBarEnabled(false);
136
            mWebviewPop.setWebViewClient(new MyCustomWebViewClient());
137
            mWebviewPop.getSettings().setJavaScriptEnabled(true);
138
            mWebviewPop.getSettings().setSavePassword(false);
139
            mWebviewPop.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
140
                    ViewGroup.LayoutParams.MATCH_PARENT));
141
            mContainer.addView(mWebviewPop);
142
            WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
143
            transport.setWebView(mWebviewPop);
144
            resultMsg.sendToTarget();
145
146
            return true;
147
        }
148
149
        @Override
150
        public void onCloseWindow(WebView window) {
151
            Log.d("onCloseWindow", "called");
152
        }
153
154
    }
155
}