Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import android.content.Intent;
- import android.content.pm.PackageInfo;
- import android.content.pm.PackageManager;
- import android.net.Uri;
- import android.net.http.SslError;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.support.v4.widget.SwipeRefreshLayout;
- import android.support.v7.app.AppCompatActivity;
- import android.util.Log;
- import android.view.View;
- import android.view.ViewGroup;
- import android.webkit.CookieManager;
- import android.webkit.SslErrorHandler;
- import android.webkit.WebChromeClient;
- import android.webkit.WebResourceError;
- import android.webkit.WebResourceRequest;
- import android.webkit.WebResourceResponse;
- import android.webkit.WebSettings;
- import android.webkit.WebView;
- import android.webkit.WebViewClient;
- import android.widget.FrameLayout;
- import android.widget.Toast;
- public class MainActivity extends AppCompatActivity {
- private static final String target_url = "https://myapp.com/gen_age/index.php";
- private static final String target_url_prefix = "myapp.com/gen_age/index.php";
- private WebView mWebview;
- private WebView mWebviewPop;
- private FrameLayout mContainer;
- private SwipeRefreshLayout swipeLayout;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- CookieManager cookieManager = CookieManager.getInstance();
- cookieManager.setAcceptCookie(true);
- mWebview = findViewById(R.id.webView);
- mContainer = findViewById(R.id.webview_frame);
- swipeLayout = findViewById(R.id.swipe_container);
- final WebSettings webSettings = mWebview.getSettings();
- webSettings.setJavaScriptEnabled(true);
- webSettings.setAppCacheEnabled(true);
- webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
- webSettings.setSupportMultipleWindows(true);
- mWebview.setWebViewClient(new UriWebViewClient());
- mWebview.setWebChromeClient(new UriChromeClient());
- mWebview.loadUrl(target_url);
- swipeLayout.setRefreshing(true);
- swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
- @Override
- public void onRefresh() {
- //Do your task
- mWebview.reload();
- }
- });
- }
- private class UriWebViewClient extends WebViewClient {
- @Override
- public void onPageFinished(WebView view, String url) {
- super.onPageFinished(view, url);
- swipeLayout.setRefreshing(false);
- }
- @Override
- public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
- super.onReceivedError(view, request, error);
- swipeLayout.setRefreshing(false);
- }
- @Override
- public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
- super.onReceivedHttpError(view, request, errorResponse);
- swipeLayout.setRefreshing(false);
- }
- @Override
- public boolean shouldOverrideUrlLoading(final WebView view, final String url) {
- try {
- 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")) {
- return false;
- }
- } catch (Exception e) {
- Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
- }
- // swipeLayout.setRefreshing(false);
- return true;
- }
- @Override
- public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
- swipeLayout.setRefreshing(false);
- Log.d("onReceivedSslError", "onReceivedSslError");
- //super.onReceivedSslError(view, handler, error);
- }
- }
- @Override
- public void onBackPressed() {
- if (mWebview.canGoBack()) {
- mWebview.goBack();
- } else {
- finish();
- }
- }
- class UriChromeClient extends WebChromeClient {
- @Override
- public boolean onCreateWindow(WebView view, boolean isDialog,
- boolean isUserGesture, Message resultMsg) {
- mWebviewPop = new WebView(getApplicationContext());
- mWebviewPop.setVerticalScrollBarEnabled(false);
- mWebviewPop.setHorizontalScrollBarEnabled(false);
- mWebviewPop.setWebViewClient(new UriWebViewClient());
- 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");
- }
- }
- }
Add Comment
Please, Sign In to add comment