Guest User

Untitled

a guest
Jan 24th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.66 KB | None | 0 0
  1. import android.content.Intent;
  2. import android.content.pm.PackageInfo;
  3. import android.content.pm.PackageManager;
  4. import android.net.Uri;
  5. import android.net.http.SslError;
  6. import android.os.Bundle;
  7. import android.os.Handler;
  8. import android.os.Message;
  9. import android.support.v4.widget.SwipeRefreshLayout;
  10. import android.support.v7.app.AppCompatActivity;
  11. import android.util.Log;
  12. import android.view.View;
  13. import android.view.ViewGroup;
  14. import android.webkit.CookieManager;
  15. import android.webkit.SslErrorHandler;
  16. import android.webkit.WebChromeClient;
  17. import android.webkit.WebResourceError;
  18. import android.webkit.WebResourceRequest;
  19. import android.webkit.WebResourceResponse;
  20.  
  21. import android.webkit.WebSettings;
  22. import android.webkit.WebView;
  23. import android.webkit.WebViewClient;
  24. import android.widget.FrameLayout;
  25. import android.widget.Toast;
  26.  
  27. public class MainActivity extends AppCompatActivity {
  28.  
  29. private static final String target_url = "https://myapp.com/gen_age/index.php";
  30. private static final String target_url_prefix = "myapp.com/gen_age/index.php";
  31. private WebView mWebview;
  32. private WebView mWebviewPop;
  33. private FrameLayout mContainer;
  34. private SwipeRefreshLayout swipeLayout;
  35.  
  36. @Override
  37. protected void onCreate(Bundle savedInstanceState) {
  38. super.onCreate(savedInstanceState);
  39.  
  40. setContentView(R.layout.activity_main);
  41.  
  42. CookieManager cookieManager = CookieManager.getInstance();
  43. cookieManager.setAcceptCookie(true);
  44.  
  45. mWebview = findViewById(R.id.webView);
  46. mContainer = findViewById(R.id.webview_frame);
  47. swipeLayout = findViewById(R.id.swipe_container);
  48.  
  49. final WebSettings webSettings = mWebview.getSettings();
  50. webSettings.setJavaScriptEnabled(true);
  51. webSettings.setAppCacheEnabled(true);
  52. webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
  53. webSettings.setSupportMultipleWindows(true);
  54. mWebview.setWebViewClient(new UriWebViewClient());
  55. mWebview.setWebChromeClient(new UriChromeClient());
  56. mWebview.loadUrl(target_url);
  57.  
  58.  
  59. swipeLayout.setRefreshing(true);
  60.  
  61. swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
  62.  
  63. @Override
  64. public void onRefresh() {
  65. //Do your task
  66. mWebview.reload();
  67. }
  68. });
  69.  
  70. }
  71.  
  72. private class UriWebViewClient extends WebViewClient {
  73.  
  74. @Override
  75. public void onPageFinished(WebView view, String url) {
  76. super.onPageFinished(view, url);
  77. swipeLayout.setRefreshing(false);
  78. }
  79.  
  80. @Override
  81. public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
  82. super.onReceivedError(view, request, error);
  83. swipeLayout.setRefreshing(false);
  84. }
  85.  
  86. @Override
  87. public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
  88. super.onReceivedHttpError(view, request, errorResponse);
  89. swipeLayout.setRefreshing(false);
  90. }
  91.  
  92. @Override
  93. public boolean shouldOverrideUrlLoading(final WebView view, final String url) {
  94.  
  95. try {
  96.  
  97. String host = Uri.parse(url).getHost();
  98. //Log.d("shouldOverrideUrlLoading", url);
  99. if (host.equals(target_url_prefix)) {
  100. // This is my web site, so do not override; let my WebView load
  101. // the page
  102. if (mWebviewPop != null) {
  103. mWebviewPop.setVisibility(View.GONE);
  104. mContainer.removeView(mWebviewPop);
  105. mWebviewPop = null;
  106. }
  107. return false;
  108. }
  109.  
  110. if (host.equals("m.facebook.com")) {
  111. return false;
  112. }
  113.  
  114.  
  115.  
  116.  
  117. } catch (Exception e) {
  118. Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
  119. }
  120.  
  121. // swipeLayout.setRefreshing(false);
  122.  
  123. return true;
  124. }
  125.  
  126. @Override
  127. public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
  128. swipeLayout.setRefreshing(false);
  129.  
  130. Log.d("onReceivedSslError", "onReceivedSslError");
  131. //super.onReceivedSslError(view, handler, error);
  132. }
  133. }
  134.  
  135.  
  136.  
  137. @Override
  138. public void onBackPressed() {
  139. if (mWebview.canGoBack()) {
  140. mWebview.goBack();
  141. } else {
  142. finish();
  143. }
  144. }
  145.  
  146. class UriChromeClient extends WebChromeClient {
  147.  
  148. @Override
  149. public boolean onCreateWindow(WebView view, boolean isDialog,
  150. boolean isUserGesture, Message resultMsg) {
  151. mWebviewPop = new WebView(getApplicationContext());
  152. mWebviewPop.setVerticalScrollBarEnabled(false);
  153. mWebviewPop.setHorizontalScrollBarEnabled(false);
  154. mWebviewPop.setWebViewClient(new UriWebViewClient());
  155. mWebviewPop.getSettings().setJavaScriptEnabled(true);
  156. mWebviewPop.getSettings().setSavePassword(false);
  157. mWebviewPop.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
  158. ViewGroup.LayoutParams.MATCH_PARENT));
  159. mContainer.addView(mWebviewPop);
  160. WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
  161. transport.setWebView(mWebviewPop);
  162. resultMsg.sendToTarget();
  163.  
  164. return true;
  165. }
  166.  
  167. @Override
  168. public void onCloseWindow(WebView window) {
  169. Log.d("onCloseWindow", "called");
  170. }
  171.  
  172. }
  173. }
Add Comment
Please, Sign In to add comment