package com.demo;
import android.Manifest;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.DownloadManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.net.http.SslError;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Message;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.DownloadListener;
import android.webkit.HttpAuthHandler;
import android.webkit.JsPromptResult;
import android.webkit.JsResult;
import android.webkit.SslErrorHandler;
import android.webkit.URLUtil;
import android.webkit.ValueCallback;
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.Button;
import android.widget.FrameLayout;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.google.android.gms.ads.doubleclick.AppEventListener;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Tracker;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MainActivity extends Activity {
private static final int INPUT_FILE_REQUEST_CODE = 1;
private static final String TAG = MainActivity.class.getSimpleName();
/*private WebView webView;*/
private WebSettings webSettings;
// private ValueCallback<Uri[]> mUploadMessage;
private String mCameraPhotoPath = null;
private long size = 0;
private CustomWebView mWebView;
private CustomWebView mWebviewPop;
private RelativeLayout noDataRL;
private ProgressBar mProgressBar;
private Button retry;
private boolean ISBTNCLICKED=false;
private ValueCallback<Uri> mUploadMessage;
private final static int FILECHOOSER_RESULTCODE = 1;
// private static final String target_url_prefix="https://m.facebook.com/v2.5/dialog/oauth";
private String HomePageURL = "*******";
private String mainURL = "********";
private FrameLayout mContainer;
private String mCM;
private ValueCallback<Uri> mUM;
private ValueCallback<Uri[]> mUMA;
private final static int FCR=1;
private GoogleAnalytics sAnalytics;
private Tracker sTracker;
String activityname[];
private Context mContext;
private String[] split_one;
private String[] split_two;
private String googleauthredirecturl;
private Uri uri;
private String urlString;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initWebview();
// InternalContext.getInstance().setBaseContext(this);
mContext=this.getApplicationContext();
sAnalytics = GoogleAnalytics.getInstance(this);
sTracker=getDefaultTracker();
if(Build.VERSION.SDK_INT >=23 && (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}, 1);
}
CookieManager cookieManager=CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
if(getIntent().getExtras()!=null){
mainURL=getIntent().getExtras().getString("mainURL");
}else{
}
// mWebView.getSettings().setUserAgentString("Chrome/56.0.0.0 Mobile");
}
private void initView() {
mContainer = (FrameLayout) findViewById(R.id.mContainer);
mWebView = (CustomWebView) findViewById(R.id.webviews);
noDataRL = (RelativeLayout)findViewById(R.id.noDataRL);
mProgressBar= (ProgressBar) findViewById(R.id.mProgressBar);
retry=(Button)findViewById(R.id.retry);
}
private void initWebview() {
WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDomStorageEnabled(true);
settings.setAppCacheEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setSupportMultipleWindows(true);
settings.setAllowFileAccess(true);
if(Build.VERSION.SDK_INT >= 21){
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
mWebView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
}else if(Build.VERSION.SDK_INT >= 19){
mWebView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
}else if(Build.VERSION.SDK_INT < 19){
mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
if (isNetworkAvailable()){
mWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
mWebView.setWebChromeClient(new MyWebChromeClient());
mWebView.loadUrl(mainURL);
mWebView.setVisibility(View.VISIBLE);
noDataRL.setVisibility(View.GONE);
}else{
mWebView.setVisibility(View.GONE);
noDataRL.setVisibility(View.VISIBLE);
mProgressBar.setVisibility(View.GONE);
// singelButtonAlertDialog(this,"Ok","No internet Available.","Please try aagain after sometime.",true);
// Toast.makeText(getApplicationContext(),"No Internet Available.",Toast.LENGTH_SHORT).show();
}
retry.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isNetworkAvailable()){
// mWebView.reload();
ISBTNCLICKED=true;
mWebView.loadUrl( "javascript:window.location.reload( true )" );
}else{
Toast.makeText(getApplicationContext(),"No Internet Available.",Toast.LENGTH_SHORT).show();
}
}
});
mWebViewClicked();
mWebView.setDownloadListener(new DownloadListener() {
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype,
long contentLength) {
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.setMimeType(mimetype);
//------------------------COOKIE!!------------------------
String cookies = CookieManager.getInstance().getCookie(url);
request.addRequestHeader("cookie", cookies);
//------------------------COOKIE!!------------------------
request.addRequestHeader("User-Agent", userAgent);
request.setDescription("Downloading file...");
request.setTitle(URLUtil.guessFileName(url, contentDisposition, mimetype));
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, URLUtil.guessFileName(url, contentDisposition, mimetype));
DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
dm.enqueue(request);
Toast.makeText(getApplicationContext(), "Downloading File", Toast.LENGTH_LONG).show();
}
});
}
synchronized public Tracker getDefaultTracker() {
// To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG
if (sTracker == null) {
sTracker = sAnalytics.newTracker("UA-121816562-1");
}
return sTracker;
}
private class MyCustomWebViewClient extends WebViewClient {
// @Override
// public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)
@Override
public boolean shouldOverrideUrlLoading(WebView webview, String url) {
String host = Uri.parse(url).getHost();
if( url.startsWith("http:") || url.startsWith("https:") ) {
if (host.equals("")) {
if (mWebView != null) {
mWebView.setVisibility(View.GONE);
mContainer.removeView(mWebView);
mWebView = null;
}
return false;
}
if (host.equals("m.facebook.com") || host.equals("www.facebook.com") || host.equals("facebook.com") || host.equals("mobile.facebook.com")) {
return false;
}
if (host.equals("m.google.com") || host.equals("www.google.com") || host.equals("google.com") || host.startsWith("https://accounts.google.com")) {
return false;
}
if(url.startsWith("https://accounts.google.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;*/
}
// Otherwise allow the OS to handle it
else if(url.startsWith("webviewshare:")){
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, "Put Data Here");
startActivity(Intent.createChooser(shareIntent,("How do you want to share")));
return true;
}
/*else if (url.startsWith("tel:")) {
Intent tel = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
startActivity(tel);
return true;
}
//This is again specific for my website
else if (url.startsWith("mailto:")) {
Intent mail = new Intent(Intent.ACTION_SEND);
mail.setType("application/octet-stream");
String AdressMail = new String(url.replace("mailto:" , "")) ;
mail.putExtra(Intent.EXTRA_EMAIL, new String[]{ AdressMail });
mail.putExtra(Intent.EXTRA_SUBJECT, "");
mail.putExtra(Intent.EXTRA_TEXT, "");
startActivity(mail);
return true;
}*/
else{
return UrlLoadingMethod(url.toString());
}
return true;
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
mProgressBar.setVisibility(View.GONE);
Log.d("onReceivedSslError", "onReceivedSslError");
if (isNetworkAvailable()) {
mWebView.reload();
}
//super.onReceivedSslError(view, handler, error);
}
@Override
public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
super.onReceivedHttpError(view, request, errorResponse);
if (isNetworkAvailable()) {
mWebView.reload();
}
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
if (isNetworkAvailable()) {
mWebView.reload();
}
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
Log.v("sandeep ","sandeep sss"+url);
sendScreenName(url);
mProgressBar.setVisibility(View.VISIBLE);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.d("Url",url);
mProgressBar.setVisibility(View.GONE);
try {
String host = Uri.parse(url).getHost();
if(host.equals("m.facebook.com") || host.equals("mobile.facebook.com "))
{
if(url.contains("oauth?")){
if(mWebviewPop!=null)
{
mWebviewPop.setVisibility(View.GONE);
mContainer.removeView(mWebviewPop);
mWebviewPop=null;
}
onResume();
// webView.loadUrl("URL");
return;
}
}
}catch (Exception d){}
if(url.startsWith("https://accounts.google.com/o/oauth2/auth?" ) ){
/*split_one=url.split("redirect_uri=");
split_two=split_one[1].split("&client_id");
Log.v("gooleauthredirecturi...",split_two[0].toString());
googleauthredirecturl=split_two[0].toString();*/
try {
if(mWebviewPop!=null)
{
mWebviewPop.setVisibility(View.GONE);
mContainer.removeView(mWebviewPop);
mWebviewPop=null;
}
}catch (Exception d){}
// mWebView.loadUrl(googleauthredirecturl);
onResume();
return;
}
if(url.startsWith("https://accounts.google.com/o/oauth2/approval?" ) ){
if(mWebviewPop!=null)
{
mWebviewPop.setVisibility(View.GONE);
mContainer.removeView(mWebviewPop);
mWebviewPop=null;
}
// uri=Uri.parse(googleauthredirecturl);
// urlString=uri.buildUpon().build().toString();
// mWebView.loadUrl(urlString);
onResume();
return;
}
if(url.startsWith("https://api.razorpay.com/v1/payments" ) ){
try {
if(mWebviewPop!=null)
{
mWebviewPop.setVisibility(View.GONE);
mContainer.removeView(mWebviewPop);
mWebviewPop=null;
}
}catch (Exception d){}
// uri=Uri.parse(googleauthredirecturl);
// urlString=uri.buildUpon().build().toString();
// mWebView.loadUrl(urlString);
onResume();
return;
}
if (ISBTNCLICKED){
if (isNetworkAvailable()){
mWebView.setVisibility(View.VISIBLE);
noDataRL.setVisibility(View.GONE);
}else{
// mWebView.setVisibility(View.GONE);
// noDataRL.setVisibility(View.VISIBLE);
mProgressBar.setVisibility(View.GONE);
// Toast.makeText(getApplicationContext(),"No Internet Available.",Toast.LENGTH_SHORT).show();
}
ISBTNCLICKED=false;
}
mProgressBar.setVisibility(View.GONE);
}
@Override
public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) {
super.onReceivedHttpAuthRequest(view, handler, host, realm);
}
@Override
public void onReceivedLoginRequest(WebView view, String realm, String account, String args) {
super.onReceivedLoginRequest(view, realm, account, args);
}
}
public boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
public void mWebViewClicked(){
mWebView.setWebViewClient(new WebViewClient() {
@TargetApi(Build.VERSION_CODES.M)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
// SetHeaderMethod(request.getUrl().toString());
return UrlLoadingMethod(request.getUrl().toString());
}
@SuppressWarnings("deprecation")
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// SetHeaderMethod(url.toString());
Log.v("url",url);
return UrlLoadingMethod(url.toString());
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
sendScreenName(url);
super.onPageStarted(view, url, favicon);
mProgressBar.setVisibility(View.VISIBLE);
// Toast.makeText(MainActivity.this, "url "+url, Toast.LENGTH_SHORT).show();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
String encodedurl="";
CookieSyncManager.getInstance().sync();
Log.d("url...",url);
if(url.startsWith("https://m.facebook.com/v2.5/dialog/oauth?")){
if(mWebviewPop!=null)
{
mWebviewPop.setVisibility(View.GONE);
mContainer.removeView(mWebviewPop);
mWebviewPop=null;
}
onResume();
// webView.loadUrl("URL");
return;
}
if(url.startsWith("https://accounts.google.com/o/oauth2/auth?" ) ){
if(mWebviewPop!=null)
{
mWebviewPop.setVisibility(View.GONE);
mContainer.removeView(mWebviewPop);
mWebviewPop=null;
}
onResume();
return;
}
if(url.startsWith("https://accounts.google.com/o/oauth2/approval?" ) ){
if(mWebviewPop!=null)
{
mWebviewPop.setVisibility(View.GONE);
mContainer.removeView(mWebviewPop);
mWebviewPop=null;
}
onResume();
return;
}
try {
encodedurl = URLEncoder.encode(url, "UTF-8");
Log.d("Cookie...", "url: " + url + ", cookies: " + CookieManager.getInstance().getCookie(url));
}catch (Exception e){
}
if (ISBTNCLICKED){
if (isNetworkAvailable()){
mWebView.setVisibility(View.VISIBLE);
noDataRL.setVisibility(View.GONE);
}else{
// mWebView.setVisibility(View.GONE);
// noDataRL.setVisibility(View.VISIBLE);
mProgressBar.setVisibility(View.GONE);
// Toast.makeText(getApplicationContext(),"No Internet Available.",Toast.LENGTH_SHORT).show();
}
ISBTNCLICKED=false;
}
mProgressBar.setVisibility(View.GONE);
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
Log.v("errorCode rrrrr ","onReceivedError "+error);
// mWebView.setVisibility(View.GONE);
// noDataRL.setVisibility(View.VISIBLE);
if (isNetworkAvailable()) {
mWebView.reload();
}
}
@Override
public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
Log.v("errorCode rrrrr ","onReceivedHttpError "+errorResponse);
// mWebView.setVisibility(View.GONE);
// noDataRL.setVisibility(View.VISIBLE);
if (isNetworkAvailable()){
mWebView.reload();
}
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Log.v("errorCode X","onReceivedError "+errorCode);
// mWebView.setVisibility(View.GONE);
// noDataRL.setVisibility(View.VISIBLE);
if (isNetworkAvailable()){
mWebView.reload();
}
}
@Override
public void onReceivedSslError(WebView view,
SslErrorHandler handler, SslError error) {
mProgressBar.setVisibility(View.GONE);
// mWebView.setVisibility(View.GONE);
// noDataRL.setVisibility(View.VISIBLE);
if (isNetworkAvailable()){
mWebView.reload();
}
//Toast.makeText(TableContentsWithDisplay.this, "error "+error, Toast.LENGTH_SHORT).show();
}
});
}
private void sendScreenName(String url) {
Log.v("url","sandeep kushwah :"+url);
if(url.contains("https://www.domain.com")) {
Log.d("url... :", url);
if(url.equalsIgnoreCase("https://www.domain.com/")) {
sTracker.setScreenName("Activity~" + "Login");
}
else {
activityname = url.split(".com/");
sTracker.setScreenName("Activity~" + activityname[1]);
}
sTracker.send(new HitBuilders.ScreenViewBuilder().build());
}else {
sTracker.setScreenName("Activity~" + url);
sTracker.send(new HitBuilders.ScreenViewBuilder().build());
}
}
public void clearSession(){
/*CookieSyncManager cookieSyncMngr = CookieSyncManager.createInstance(MainActivity.this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
mWebView.clearCache(true);
mWebView.clearHistory();*/
}
private void ActivityFinishAlert(){
AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this);
builder1.setMessage("Do you want to exit!");
builder1.setCancelable(true);
builder1.setPositiveButton(
"Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
finish();
}
});
builder1.setNegativeButton(
"No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert11 = builder1.create();
alert11.show();
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
Log.v("onactivityResult....","results...."+intent.getData());
/*if (requestCode == FILECHOOSER_RESULTCODE) {
if (null == mUploadMessage)
return;
Uri result = intent == null || resultCode != RESULT_OK ? null
: intent.getData();
mUploadMessage.onReceiveValue(result);
mUploadMessage = null;
}*/
if(Build.VERSION.SDK_INT >= 21){
Uri[] results = null;
//Check if response is positive
if(resultCode== Activity.RESULT_OK){
if(requestCode == FCR){
if(null == mUMA){
return;
}
if(intent == null || intent.getData() == null){
//Capture Photo if no image available
if(mCM != null){
results = new Uri[]{Uri.parse(mCM)};
}
}else{
String dataString = intent.getDataString();
if(dataString != null){
results = new Uri[]{Uri.parse(dataString)};
}
}
}
}
mUMA.onReceiveValue(results);
mUMA = null;
}else{
if(requestCode == FCR){
if(null == mUM) return;
Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData();
mUM.onReceiveValue(result);
mUM = null;
}
}
}
class MyWebChromeClient extends WebChromeClient {
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
Log.d(TAG,"url "+callback.toString());
view.setVisibility(View.GONE);
}
@Override
public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
Log.d(TAG,"url "+url);
result.confirm();
return true;
}
@Override
public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
Log.d(TAG,"url "+url);
result.confirm();
return true;
}
@Override
public boolean onJsBeforeUnload(WebView view, String url, String message, JsResult result) {
Log.d(TAG,"url "+url);
result.confirm();
return true;
}
@Override
public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
new AlertDialog.Builder(MainActivity.this)
.setTitle("javaScript dialog")
.setMessage(message)
.setPositiveButton(android.R.string.ok,
new AlertDialog.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
result.confirm();
}
})
.setCancelable(false)
.create()
.show();
return true;
}
@Override
public boolean onCreateWindow(WebView view, boolean isDialog,
boolean isUserGesture, Message resultMsg) {
mWebviewPop = new CustomWebView(mContext);
// mWebviewPop.loadDataWithBaseURL();
mWebviewPop.setVerticalScrollBarEnabled(true);
mWebviewPop.setHorizontalScrollBarEnabled(true);
// mWebviewPop.getSettings().setUserAgentString("Chrome/56.0.0.0 Mobile");
mWebviewPop.setWebViewClient(new MyCustomWebViewClient());
mWebviewPop.getSettings().setJavaScriptEnabled(true);
mWebviewPop.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mWebviewPop.getSettings().setSavePassword(false);
mWebviewPop.getSettings().setSupportZoom(true);
mWebviewPop.getSettings().setBuiltInZoomControls(true);
mWebviewPop.getSettings().setSupportMultipleWindows(true);
mWebviewPop.setWebChromeClient(new MyWebChromeClient());
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");
}
public void openFileChooser(ValueCallback<Uri> uploadMsg){
mUM = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("*/*");
MainActivity.this.startActivityForResult(Intent.createChooser(i,"File Chooser"), FCR);
}
// For Android 3.0+, above method not supported in some android 3+ versions, in such case we use this
public void openFileChooser(ValueCallback uploadMsg, String acceptType){
mUM = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("*/*");
MainActivity.this.startActivityForResult(
Intent.createChooser(i, "File Browser"),
FCR);
}
//For Android 4.1+
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture){
mUM = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("*/*");
MainActivity.this.startActivityForResult(Intent.createChooser(i, "File Chooser"), MainActivity.FCR);
}
//For Android 5.0+
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback,
WebChromeClient.FileChooserParams fileChooserParams){
if(mUMA != null){
mUMA.onReceiveValue(null);
}
mUMA = filePathCallback;
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if(takePictureIntent.resolveActivity(MainActivity.this.getPackageManager()) != null){
File photoFile = null;
try{
photoFile = createImageFile();
takePictureIntent.putExtra("PhotoPath", mCM);
}catch(IOException ex){
Log.e(TAG, "Image file creation failed", ex);
}
if(photoFile != null){
mCM = "file:" + photoFile.getAbsolutePath();
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
}else{
takePictureIntent = null;
}
}
Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT);
contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE);
contentSelectionIntent.setType("*/*");
Intent[] intentArray;
if(takePictureIntent != null){
intentArray = new Intent[]{takePictureIntent};
}else{
intentArray = new Intent[0];
}
Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER);
chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent);
chooserIntent.putExtra(Intent.EXTRA_TITLE, "Image Chooser");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
startActivityForResult(chooserIntent, FCR);
return true;
}
}
@Override
public void onBackPressed() {
try {
if (mWebView.getUrl().equalsIgnoreCase("https://www.domain.com/dashboard") ){
ActivityFinishAlert();
// finish();
DailogBackPress();
}else{
if(mWebviewPop!=null){
if(mWebviewPop.canGoBack()) {
mWebviewPop.goBack();
}
}
if (mWebView.canGoBack()) {
if ( mWebView.getUrl().equalsIgnoreCase(HomePageURL)){
ActivityFinishAlert();
}else{
mWebView.goBack();
}
} else {
ActivityFinishAlert();
}
}
}catch (Exception d){}
}
public void DailogBackPress(){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(false);
builder.setMessage("Do you want to Exit?");
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//if user pressed "yes", then he is allowed to exit from application
finish();
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//if user select "No", just cancel this dialog and continue with app
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
private File createImageFile() throws IOException{
@SuppressLint("SimpleDateFormat") String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "img_"+timeStamp+"_";
File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
return File.createTempFile(imageFileName,".jpg",storageDir);
}
/*@Override
public boolean onKeyDown(int keyCode, @NonNull KeyEvent event){
if(event.getAction() == KeyEvent.ACTION_DOWN){
switch(keyCode){
case KeyEvent.KEYCODE_BACK:
if(mWebView.canGoBack()){
mWebView.goBack();
}else{
finish();
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}*/
/*@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
}*/
public Boolean UrlLoadingMethod(final String request) {
if( request.toString().startsWith("http:") || request.toString().startsWith("https:") ) {
return false;
}
// Otherwise allow the OS to handle it
else if (request.toString().startsWith("tel:")) {
Intent tel = new Intent(Intent.ACTION_DIAL, Uri.parse(request.toString()));
startActivity(tel);
return true;
}
else if (request.toString().startsWith("mailto:")) {
URL url = null;
String[] body ;
String subject1=null;
String[] subject = request.split("subject=");
body=subject[1].split("body=");
try {
url= new URL(URLDecoder.decode(body[1], "UTF-8"));
// subject1= new URL(URLDecoder.decode(body[0], "UTF-8"));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
subject1=body[0].toString().replace("%20"," ");
Intent mail = new Intent(Intent.ACTION_SEND);
mail.setType("text/plain");
mail.putExtra(Intent.EXTRA_EMAIL, new String[]{""});
mail.putExtra(Intent.EXTRA_SUBJECT, subject1);
mail.putExtra(Intent.EXTRA_TEXT, url.toString());
startActivity(mail);
return true;
}
else if (request.toString().startsWith("whatsapp:")) {
PackageManager pm=getPackageManager();
try {
String[] body ;
String url=null;
body=request.split("text=");
try {
url= (URLDecoder.decode(body[1], "UTF-8"));
// url =new URL(body[1]);
} catch (Exception e) {
e.printStackTrace();
}
Intent waIntent = new Intent(Intent.ACTION_SEND);
waIntent.setType("text/plain");
PackageInfo info=pm.getPackageInfo("com.whatsapp", PackageManager.GET_META_DATA);
//Check if package exists or not. If not then code
//in catch block will be called
waIntent.setPackage("com.whatsapp");
waIntent.putExtra(Intent.EXTRA_TEXT,body[1].toString());
startActivity(Intent.createChooser(waIntent, "Share with"));
} catch (PackageManager.NameNotFoundException e) {
Toast.makeText(MainActivity.this, "WhatsApp not Installed", Toast.LENGTH_SHORT)
.show();
}
return true;
} else if (request.toString().startsWith("webviewshare:")){
// SetReloadUrl=true;
String whatsaapShareContent="";
String[] item = request.toString().split(":");
try {
whatsaapShareContent = (URLDecoder.decode(item[1], "UTF-8"));
}catch (Exception e){
}
String text=item[1].replace("+"," ");
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, whatsaapShareContent);
startActivity(Intent.createChooser(shareIntent,"Select Share options."));
}catch (Exception d){
d.printStackTrace();
}
return true;
}else{
// mGetParamsFromUrl(request);
return true;
}
// return true;
}
}
import android.Manifest;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.DownloadManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.net.http.SslError;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Message;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.DownloadListener;
import android.webkit.HttpAuthHandler;
import android.webkit.JsPromptResult;
import android.webkit.JsResult;
import android.webkit.SslErrorHandler;
import android.webkit.URLUtil;
import android.webkit.ValueCallback;
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.Button;
import android.widget.FrameLayout;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.google.android.gms.ads.doubleclick.AppEventListener;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Tracker;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MainActivity extends Activity {
private static final int INPUT_FILE_REQUEST_CODE = 1;
private static final String TAG = MainActivity.class.getSimpleName();
/*private WebView webView;*/
private WebSettings webSettings;
// private ValueCallback<Uri[]> mUploadMessage;
private String mCameraPhotoPath = null;
private long size = 0;
private CustomWebView mWebView;
private CustomWebView mWebviewPop;
private RelativeLayout noDataRL;
private ProgressBar mProgressBar;
private Button retry;
private boolean ISBTNCLICKED=false;
private ValueCallback<Uri> mUploadMessage;
private final static int FILECHOOSER_RESULTCODE = 1;
// private static final String target_url_prefix="https://m.facebook.com/v2.5/dialog/oauth";
private String HomePageURL = "*******";
private String mainURL = "********";
private FrameLayout mContainer;
private String mCM;
private ValueCallback<Uri> mUM;
private ValueCallback<Uri[]> mUMA;
private final static int FCR=1;
private GoogleAnalytics sAnalytics;
private Tracker sTracker;
String activityname[];
private Context mContext;
private String[] split_one;
private String[] split_two;
private String googleauthredirecturl;
private Uri uri;
private String urlString;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initWebview();
// InternalContext.getInstance().setBaseContext(this);
mContext=this.getApplicationContext();
sAnalytics = GoogleAnalytics.getInstance(this);
sTracker=getDefaultTracker();
if(Build.VERSION.SDK_INT >=23 && (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}, 1);
}
CookieManager cookieManager=CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
if(getIntent().getExtras()!=null){
mainURL=getIntent().getExtras().getString("mainURL");
}else{
}
// mWebView.getSettings().setUserAgentString("Chrome/56.0.0.0 Mobile");
}
private void initView() {
mContainer = (FrameLayout) findViewById(R.id.mContainer);
mWebView = (CustomWebView) findViewById(R.id.webviews);
noDataRL = (RelativeLayout)findViewById(R.id.noDataRL);
mProgressBar= (ProgressBar) findViewById(R.id.mProgressBar);
retry=(Button)findViewById(R.id.retry);
}
private void initWebview() {
WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDomStorageEnabled(true);
settings.setAppCacheEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setSupportMultipleWindows(true);
settings.setAllowFileAccess(true);
if(Build.VERSION.SDK_INT >= 21){
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
mWebView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
}else if(Build.VERSION.SDK_INT >= 19){
mWebView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
}else if(Build.VERSION.SDK_INT < 19){
mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
if (isNetworkAvailable()){
mWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
mWebView.setWebChromeClient(new MyWebChromeClient());
mWebView.loadUrl(mainURL);
mWebView.setVisibility(View.VISIBLE);
noDataRL.setVisibility(View.GONE);
}else{
mWebView.setVisibility(View.GONE);
noDataRL.setVisibility(View.VISIBLE);
mProgressBar.setVisibility(View.GONE);
// singelButtonAlertDialog(this,"Ok","No internet Available.","Please try aagain after sometime.",true);
// Toast.makeText(getApplicationContext(),"No Internet Available.",Toast.LENGTH_SHORT).show();
}
retry.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isNetworkAvailable()){
// mWebView.reload();
ISBTNCLICKED=true;
mWebView.loadUrl( "javascript:window.location.reload( true )" );
}else{
Toast.makeText(getApplicationContext(),"No Internet Available.",Toast.LENGTH_SHORT).show();
}
}
});
mWebViewClicked();
mWebView.setDownloadListener(new DownloadListener() {
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype,
long contentLength) {
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.setMimeType(mimetype);
//------------------------COOKIE!!------------------------
String cookies = CookieManager.getInstance().getCookie(url);
request.addRequestHeader("cookie", cookies);
//------------------------COOKIE!!------------------------
request.addRequestHeader("User-Agent", userAgent);
request.setDescription("Downloading file...");
request.setTitle(URLUtil.guessFileName(url, contentDisposition, mimetype));
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, URLUtil.guessFileName(url, contentDisposition, mimetype));
DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
dm.enqueue(request);
Toast.makeText(getApplicationContext(), "Downloading File", Toast.LENGTH_LONG).show();
}
});
}
synchronized public Tracker getDefaultTracker() {
// To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG
if (sTracker == null) {
sTracker = sAnalytics.newTracker("UA-121816562-1");
}
return sTracker;
}
private class MyCustomWebViewClient extends WebViewClient {
// @Override
// public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)
@Override
public boolean shouldOverrideUrlLoading(WebView webview, String url) {
String host = Uri.parse(url).getHost();
if( url.startsWith("http:") || url.startsWith("https:") ) {
if (host.equals("")) {
if (mWebView != null) {
mWebView.setVisibility(View.GONE);
mContainer.removeView(mWebView);
mWebView = null;
}
return false;
}
if (host.equals("m.facebook.com") || host.equals("www.facebook.com") || host.equals("facebook.com") || host.equals("mobile.facebook.com")) {
return false;
}
if (host.equals("m.google.com") || host.equals("www.google.com") || host.equals("google.com") || host.startsWith("https://accounts.google.com")) {
return false;
}
if(url.startsWith("https://accounts.google.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;*/
}
// Otherwise allow the OS to handle it
else if(url.startsWith("webviewshare:")){
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, "Put Data Here");
startActivity(Intent.createChooser(shareIntent,("How do you want to share")));
return true;
}
/*else if (url.startsWith("tel:")) {
Intent tel = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
startActivity(tel);
return true;
}
//This is again specific for my website
else if (url.startsWith("mailto:")) {
Intent mail = new Intent(Intent.ACTION_SEND);
mail.setType("application/octet-stream");
String AdressMail = new String(url.replace("mailto:" , "")) ;
mail.putExtra(Intent.EXTRA_EMAIL, new String[]{ AdressMail });
mail.putExtra(Intent.EXTRA_SUBJECT, "");
mail.putExtra(Intent.EXTRA_TEXT, "");
startActivity(mail);
return true;
}*/
else{
return UrlLoadingMethod(url.toString());
}
return true;
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
mProgressBar.setVisibility(View.GONE);
Log.d("onReceivedSslError", "onReceivedSslError");
if (isNetworkAvailable()) {
mWebView.reload();
}
//super.onReceivedSslError(view, handler, error);
}
@Override
public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
super.onReceivedHttpError(view, request, errorResponse);
if (isNetworkAvailable()) {
mWebView.reload();
}
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
if (isNetworkAvailable()) {
mWebView.reload();
}
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
Log.v("sandeep ","sandeep sss"+url);
sendScreenName(url);
mProgressBar.setVisibility(View.VISIBLE);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.d("Url",url);
mProgressBar.setVisibility(View.GONE);
try {
String host = Uri.parse(url).getHost();
if(host.equals("m.facebook.com") || host.equals("mobile.facebook.com "))
{
if(url.contains("oauth?")){
if(mWebviewPop!=null)
{
mWebviewPop.setVisibility(View.GONE);
mContainer.removeView(mWebviewPop);
mWebviewPop=null;
}
onResume();
// webView.loadUrl("URL");
return;
}
}
}catch (Exception d){}
if(url.startsWith("https://accounts.google.com/o/oauth2/auth?" ) ){
/*split_one=url.split("redirect_uri=");
split_two=split_one[1].split("&client_id");
Log.v("gooleauthredirecturi...",split_two[0].toString());
googleauthredirecturl=split_two[0].toString();*/
try {
if(mWebviewPop!=null)
{
mWebviewPop.setVisibility(View.GONE);
mContainer.removeView(mWebviewPop);
mWebviewPop=null;
}
}catch (Exception d){}
// mWebView.loadUrl(googleauthredirecturl);
onResume();
return;
}
if(url.startsWith("https://accounts.google.com/o/oauth2/approval?" ) ){
if(mWebviewPop!=null)
{
mWebviewPop.setVisibility(View.GONE);
mContainer.removeView(mWebviewPop);
mWebviewPop=null;
}
// uri=Uri.parse(googleauthredirecturl);
// urlString=uri.buildUpon().build().toString();
// mWebView.loadUrl(urlString);
onResume();
return;
}
if(url.startsWith("https://api.razorpay.com/v1/payments" ) ){
try {
if(mWebviewPop!=null)
{
mWebviewPop.setVisibility(View.GONE);
mContainer.removeView(mWebviewPop);
mWebviewPop=null;
}
}catch (Exception d){}
// uri=Uri.parse(googleauthredirecturl);
// urlString=uri.buildUpon().build().toString();
// mWebView.loadUrl(urlString);
onResume();
return;
}
if (ISBTNCLICKED){
if (isNetworkAvailable()){
mWebView.setVisibility(View.VISIBLE);
noDataRL.setVisibility(View.GONE);
}else{
// mWebView.setVisibility(View.GONE);
// noDataRL.setVisibility(View.VISIBLE);
mProgressBar.setVisibility(View.GONE);
// Toast.makeText(getApplicationContext(),"No Internet Available.",Toast.LENGTH_SHORT).show();
}
ISBTNCLICKED=false;
}
mProgressBar.setVisibility(View.GONE);
}
@Override
public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) {
super.onReceivedHttpAuthRequest(view, handler, host, realm);
}
@Override
public void onReceivedLoginRequest(WebView view, String realm, String account, String args) {
super.onReceivedLoginRequest(view, realm, account, args);
}
}
public boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
public void mWebViewClicked(){
mWebView.setWebViewClient(new WebViewClient() {
@TargetApi(Build.VERSION_CODES.M)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
// SetHeaderMethod(request.getUrl().toString());
return UrlLoadingMethod(request.getUrl().toString());
}
@SuppressWarnings("deprecation")
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// SetHeaderMethod(url.toString());
Log.v("url",url);
return UrlLoadingMethod(url.toString());
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
sendScreenName(url);
super.onPageStarted(view, url, favicon);
mProgressBar.setVisibility(View.VISIBLE);
// Toast.makeText(MainActivity.this, "url "+url, Toast.LENGTH_SHORT).show();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
String encodedurl="";
CookieSyncManager.getInstance().sync();
Log.d("url...",url);
if(url.startsWith("https://m.facebook.com/v2.5/dialog/oauth?")){
if(mWebviewPop!=null)
{
mWebviewPop.setVisibility(View.GONE);
mContainer.removeView(mWebviewPop);
mWebviewPop=null;
}
onResume();
// webView.loadUrl("URL");
return;
}
if(url.startsWith("https://accounts.google.com/o/oauth2/auth?" ) ){
if(mWebviewPop!=null)
{
mWebviewPop.setVisibility(View.GONE);
mContainer.removeView(mWebviewPop);
mWebviewPop=null;
}
onResume();
return;
}
if(url.startsWith("https://accounts.google.com/o/oauth2/approval?" ) ){
if(mWebviewPop!=null)
{
mWebviewPop.setVisibility(View.GONE);
mContainer.removeView(mWebviewPop);
mWebviewPop=null;
}
onResume();
return;
}
try {
encodedurl = URLEncoder.encode(url, "UTF-8");
Log.d("Cookie...", "url: " + url + ", cookies: " + CookieManager.getInstance().getCookie(url));
}catch (Exception e){
}
if (ISBTNCLICKED){
if (isNetworkAvailable()){
mWebView.setVisibility(View.VISIBLE);
noDataRL.setVisibility(View.GONE);
}else{
// mWebView.setVisibility(View.GONE);
// noDataRL.setVisibility(View.VISIBLE);
mProgressBar.setVisibility(View.GONE);
// Toast.makeText(getApplicationContext(),"No Internet Available.",Toast.LENGTH_SHORT).show();
}
ISBTNCLICKED=false;
}
mProgressBar.setVisibility(View.GONE);
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
Log.v("errorCode rrrrr ","onReceivedError "+error);
// mWebView.setVisibility(View.GONE);
// noDataRL.setVisibility(View.VISIBLE);
if (isNetworkAvailable()) {
mWebView.reload();
}
}
@Override
public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
Log.v("errorCode rrrrr ","onReceivedHttpError "+errorResponse);
// mWebView.setVisibility(View.GONE);
// noDataRL.setVisibility(View.VISIBLE);
if (isNetworkAvailable()){
mWebView.reload();
}
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Log.v("errorCode X","onReceivedError "+errorCode);
// mWebView.setVisibility(View.GONE);
// noDataRL.setVisibility(View.VISIBLE);
if (isNetworkAvailable()){
mWebView.reload();
}
}
@Override
public void onReceivedSslError(WebView view,
SslErrorHandler handler, SslError error) {
mProgressBar.setVisibility(View.GONE);
// mWebView.setVisibility(View.GONE);
// noDataRL.setVisibility(View.VISIBLE);
if (isNetworkAvailable()){
mWebView.reload();
}
//Toast.makeText(TableContentsWithDisplay.this, "error "+error, Toast.LENGTH_SHORT).show();
}
});
}
private void sendScreenName(String url) {
Log.v("url","sandeep kushwah :"+url);
if(url.contains("https://www.domain.com")) {
Log.d("url... :", url);
if(url.equalsIgnoreCase("https://www.domain.com/")) {
sTracker.setScreenName("Activity~" + "Login");
}
else {
activityname = url.split(".com/");
sTracker.setScreenName("Activity~" + activityname[1]);
}
sTracker.send(new HitBuilders.ScreenViewBuilder().build());
}else {
sTracker.setScreenName("Activity~" + url);
sTracker.send(new HitBuilders.ScreenViewBuilder().build());
}
}
public void clearSession(){
/*CookieSyncManager cookieSyncMngr = CookieSyncManager.createInstance(MainActivity.this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
mWebView.clearCache(true);
mWebView.clearHistory();*/
}
private void ActivityFinishAlert(){
AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this);
builder1.setMessage("Do you want to exit!");
builder1.setCancelable(true);
builder1.setPositiveButton(
"Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
finish();
}
});
builder1.setNegativeButton(
"No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert11 = builder1.create();
alert11.show();
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
Log.v("onactivityResult....","results...."+intent.getData());
/*if (requestCode == FILECHOOSER_RESULTCODE) {
if (null == mUploadMessage)
return;
Uri result = intent == null || resultCode != RESULT_OK ? null
: intent.getData();
mUploadMessage.onReceiveValue(result);
mUploadMessage = null;
}*/
if(Build.VERSION.SDK_INT >= 21){
Uri[] results = null;
//Check if response is positive
if(resultCode== Activity.RESULT_OK){
if(requestCode == FCR){
if(null == mUMA){
return;
}
if(intent == null || intent.getData() == null){
//Capture Photo if no image available
if(mCM != null){
results = new Uri[]{Uri.parse(mCM)};
}
}else{
String dataString = intent.getDataString();
if(dataString != null){
results = new Uri[]{Uri.parse(dataString)};
}
}
}
}
mUMA.onReceiveValue(results);
mUMA = null;
}else{
if(requestCode == FCR){
if(null == mUM) return;
Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData();
mUM.onReceiveValue(result);
mUM = null;
}
}
}
class MyWebChromeClient extends WebChromeClient {
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
Log.d(TAG,"url "+callback.toString());
view.setVisibility(View.GONE);
}
@Override
public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
Log.d(TAG,"url "+url);
result.confirm();
return true;
}
@Override
public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
Log.d(TAG,"url "+url);
result.confirm();
return true;
}
@Override
public boolean onJsBeforeUnload(WebView view, String url, String message, JsResult result) {
Log.d(TAG,"url "+url);
result.confirm();
return true;
}
@Override
public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
new AlertDialog.Builder(MainActivity.this)
.setTitle("javaScript dialog")
.setMessage(message)
.setPositiveButton(android.R.string.ok,
new AlertDialog.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
result.confirm();
}
})
.setCancelable(false)
.create()
.show();
return true;
}
@Override
public boolean onCreateWindow(WebView view, boolean isDialog,
boolean isUserGesture, Message resultMsg) {
mWebviewPop = new CustomWebView(mContext);
// mWebviewPop.loadDataWithBaseURL();
mWebviewPop.setVerticalScrollBarEnabled(true);
mWebviewPop.setHorizontalScrollBarEnabled(true);
// mWebviewPop.getSettings().setUserAgentString("Chrome/56.0.0.0 Mobile");
mWebviewPop.setWebViewClient(new MyCustomWebViewClient());
mWebviewPop.getSettings().setJavaScriptEnabled(true);
mWebviewPop.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mWebviewPop.getSettings().setSavePassword(false);
mWebviewPop.getSettings().setSupportZoom(true);
mWebviewPop.getSettings().setBuiltInZoomControls(true);
mWebviewPop.getSettings().setSupportMultipleWindows(true);
mWebviewPop.setWebChromeClient(new MyWebChromeClient());
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");
}
public void openFileChooser(ValueCallback<Uri> uploadMsg){
mUM = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("*/*");
MainActivity.this.startActivityForResult(Intent.createChooser(i,"File Chooser"), FCR);
}
// For Android 3.0+, above method not supported in some android 3+ versions, in such case we use this
public void openFileChooser(ValueCallback uploadMsg, String acceptType){
mUM = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("*/*");
MainActivity.this.startActivityForResult(
Intent.createChooser(i, "File Browser"),
FCR);
}
//For Android 4.1+
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture){
mUM = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("*/*");
MainActivity.this.startActivityForResult(Intent.createChooser(i, "File Chooser"), MainActivity.FCR);
}
//For Android 5.0+
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback,
WebChromeClient.FileChooserParams fileChooserParams){
if(mUMA != null){
mUMA.onReceiveValue(null);
}
mUMA = filePathCallback;
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if(takePictureIntent.resolveActivity(MainActivity.this.getPackageManager()) != null){
File photoFile = null;
try{
photoFile = createImageFile();
takePictureIntent.putExtra("PhotoPath", mCM);
}catch(IOException ex){
Log.e(TAG, "Image file creation failed", ex);
}
if(photoFile != null){
mCM = "file:" + photoFile.getAbsolutePath();
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
}else{
takePictureIntent = null;
}
}
Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT);
contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE);
contentSelectionIntent.setType("*/*");
Intent[] intentArray;
if(takePictureIntent != null){
intentArray = new Intent[]{takePictureIntent};
}else{
intentArray = new Intent[0];
}
Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER);
chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent);
chooserIntent.putExtra(Intent.EXTRA_TITLE, "Image Chooser");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
startActivityForResult(chooserIntent, FCR);
return true;
}
}
@Override
public void onBackPressed() {
try {
if (mWebView.getUrl().equalsIgnoreCase("https://www.domain.com/dashboard") ){
ActivityFinishAlert();
// finish();
DailogBackPress();
}else{
if(mWebviewPop!=null){
if(mWebviewPop.canGoBack()) {
mWebviewPop.goBack();
}
}
if (mWebView.canGoBack()) {
if ( mWebView.getUrl().equalsIgnoreCase(HomePageURL)){
ActivityFinishAlert();
}else{
mWebView.goBack();
}
} else {
ActivityFinishAlert();
}
}
}catch (Exception d){}
}
public void DailogBackPress(){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(false);
builder.setMessage("Do you want to Exit?");
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//if user pressed "yes", then he is allowed to exit from application
finish();
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//if user select "No", just cancel this dialog and continue with app
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
private File createImageFile() throws IOException{
@SuppressLint("SimpleDateFormat") String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "img_"+timeStamp+"_";
File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
return File.createTempFile(imageFileName,".jpg",storageDir);
}
/*@Override
public boolean onKeyDown(int keyCode, @NonNull KeyEvent event){
if(event.getAction() == KeyEvent.ACTION_DOWN){
switch(keyCode){
case KeyEvent.KEYCODE_BACK:
if(mWebView.canGoBack()){
mWebView.goBack();
}else{
finish();
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}*/
/*@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
}*/
public Boolean UrlLoadingMethod(final String request) {
if( request.toString().startsWith("http:") || request.toString().startsWith("https:") ) {
return false;
}
// Otherwise allow the OS to handle it
else if (request.toString().startsWith("tel:")) {
Intent tel = new Intent(Intent.ACTION_DIAL, Uri.parse(request.toString()));
startActivity(tel);
return true;
}
else if (request.toString().startsWith("mailto:")) {
URL url = null;
String[] body ;
String subject1=null;
String[] subject = request.split("subject=");
body=subject[1].split("body=");
try {
url= new URL(URLDecoder.decode(body[1], "UTF-8"));
// subject1= new URL(URLDecoder.decode(body[0], "UTF-8"));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
subject1=body[0].toString().replace("%20"," ");
Intent mail = new Intent(Intent.ACTION_SEND);
mail.setType("text/plain");
mail.putExtra(Intent.EXTRA_EMAIL, new String[]{""});
mail.putExtra(Intent.EXTRA_SUBJECT, subject1);
mail.putExtra(Intent.EXTRA_TEXT, url.toString());
startActivity(mail);
return true;
}
else if (request.toString().startsWith("whatsapp:")) {
PackageManager pm=getPackageManager();
try {
String[] body ;
String url=null;
body=request.split("text=");
try {
url= (URLDecoder.decode(body[1], "UTF-8"));
// url =new URL(body[1]);
} catch (Exception e) {
e.printStackTrace();
}
Intent waIntent = new Intent(Intent.ACTION_SEND);
waIntent.setType("text/plain");
PackageInfo info=pm.getPackageInfo("com.whatsapp", PackageManager.GET_META_DATA);
//Check if package exists or not. If not then code
//in catch block will be called
waIntent.setPackage("com.whatsapp");
waIntent.putExtra(Intent.EXTRA_TEXT,body[1].toString());
startActivity(Intent.createChooser(waIntent, "Share with"));
} catch (PackageManager.NameNotFoundException e) {
Toast.makeText(MainActivity.this, "WhatsApp not Installed", Toast.LENGTH_SHORT)
.show();
}
return true;
} else if (request.toString().startsWith("webviewshare:")){
// SetReloadUrl=true;
String whatsaapShareContent="";
String[] item = request.toString().split(":");
try {
whatsaapShareContent = (URLDecoder.decode(item[1], "UTF-8"));
}catch (Exception e){
}
String text=item[1].replace("+"," ");
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, whatsaapShareContent);
startActivity(Intent.createChooser(shareIntent,"Select Share options."));
}catch (Exception d){
d.printStackTrace();
}
return true;
}else{
// mGetParamsFromUrl(request);
return true;
}
// return true;
}
}