1209 lines
53 KiB
Java
1209 lines
53 KiB
Java
package cpm.com.gskmtorange;
|
|
|
|
import android.Manifest;
|
|
import android.animation.Animator;
|
|
import android.animation.AnimatorListenerAdapter;
|
|
import android.annotation.TargetApi;
|
|
import android.app.Activity;
|
|
import android.app.AlertDialog;
|
|
import android.app.ProgressDialog;
|
|
import android.content.Context;
|
|
import android.content.DialogInterface;
|
|
import android.content.Intent;
|
|
import android.content.IntentSender;
|
|
import android.content.SharedPreferences;
|
|
import android.content.pm.PackageManager;
|
|
import android.location.Location;
|
|
import android.location.LocationManager;
|
|
import android.os.AsyncTask;
|
|
import android.os.Build;
|
|
import android.os.Bundle;
|
|
import android.os.Looper;
|
|
import android.preference.PreferenceManager;
|
|
import android.text.TextUtils;
|
|
import android.util.Log;
|
|
import android.view.KeyEvent;
|
|
import android.view.View;
|
|
import android.view.View.OnClickListener;
|
|
import android.view.inputmethod.EditorInfo;
|
|
import android.widget.ArrayAdapter;
|
|
import android.widget.AutoCompleteTextView;
|
|
import android.widget.EditText;
|
|
import android.widget.TextView;
|
|
import android.widget.Toast;
|
|
|
|
import androidx.annotation.NonNull;
|
|
import androidx.appcompat.app.AppCompatActivity;
|
|
import androidx.cardview.widget.CardView;
|
|
import androidx.core.app.ActivityCompat;
|
|
import androidx.core.content.ContextCompat;
|
|
|
|
import com.google.android.gms.common.ConnectionResult;
|
|
import com.google.android.gms.common.GooglePlayServicesUtil;
|
|
import com.google.android.gms.common.api.GoogleApiClient;
|
|
import com.google.android.gms.common.api.PendingResult;
|
|
import com.google.android.gms.common.api.ResultCallback;
|
|
import com.google.android.gms.common.api.Status;
|
|
import com.google.android.gms.location.FusedLocationProviderClient;
|
|
import com.google.android.gms.location.LocationCallback;
|
|
import com.google.android.gms.location.LocationListener;
|
|
import com.google.android.gms.location.LocationRequest;
|
|
import com.google.android.gms.location.LocationResult;
|
|
import com.google.android.gms.location.LocationServices;
|
|
import com.google.android.gms.location.LocationSettingsRequest;
|
|
import com.google.android.gms.location.LocationSettingsResult;
|
|
import com.google.android.gms.location.LocationSettingsStatusCodes;
|
|
import com.google.android.gms.location.Priority;
|
|
import com.google.android.gms.maps.model.LatLng;
|
|
import com.google.android.material.snackbar.Snackbar;
|
|
import com.google.firebase.analytics.FirebaseAnalytics;
|
|
|
|
import com.google.firebase.crashlytics.FirebaseCrashlytics;
|
|
import com.google.gson.Gson;
|
|
import com.google.gson.reflect.TypeToken;
|
|
|
|
import org.ksoap2.SoapEnvelope;
|
|
import org.ksoap2.serialization.SoapObject;
|
|
import org.ksoap2.serialization.SoapSerializationEnvelope;
|
|
import org.ksoap2.transport.HttpTransportSE;
|
|
import org.xmlpull.v1.XmlPullParser;
|
|
import org.xmlpull.v1.XmlPullParserException;
|
|
import org.xmlpull.v1.XmlPullParserFactory;
|
|
|
|
import java.io.IOException;
|
|
import java.io.StringReader;
|
|
import java.lang.reflect.Type;
|
|
import java.net.MalformedURLException;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.ArrayList;
|
|
import java.util.Calendar;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import cpm.com.gskmtorange.GetterSetter.PD_CONFIGURATION;
|
|
import cpm.com.gskmtorange.autoupdate.AutoUpdateActivity;
|
|
import cpm.com.gskmtorange.constant.CommonFunctions;
|
|
import cpm.com.gskmtorange.constant.CommonString;
|
|
import cpm.com.gskmtorange.password.MPinActivity;
|
|
import cpm.com.gskmtorange.xmlGetterSetter.FailureGetterSetter;
|
|
import cpm.com.gskmtorange.xmlGetterSetter.LoginGetterSetter;
|
|
import cpm.com.gskmtorange.xmlGetterSetter.TableBean;
|
|
import cpm.com.gskmtorange.xmlHandlers.XMLHandlers;
|
|
//import io.fabric.sdk.android.Fabric;
|
|
|
|
import static android.Manifest.permission.READ_CONTACTS;
|
|
import static com.google.android.gms.location.LocationRequest.Builder.IMPLICIT_MIN_UPDATE_INTERVAL;
|
|
|
|
|
|
public class LoginActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks,
|
|
GoogleApiClient.OnConnectionFailedListener, LocationListener {
|
|
private static final int MY_PERMISSIONS_REQUEST_CAMERA = 10;
|
|
private static final int MY_PERMISSIONS_REQUEST_LOCATION = 11;
|
|
private static final int MY_PERMISSIONS_REQUEST_STORAGE_READ = 12;
|
|
private static final int MY_PERMISSIONS_REQUEST_STORAGE_WRITE = 14;
|
|
private FirebaseAnalytics mFirebaseAnalytics;
|
|
|
|
private static final int PERMISSION_ALL = 99;
|
|
|
|
String app_ver;
|
|
LoginGetterSetter lgs = null;
|
|
static int counter = 1;
|
|
private SharedPreferences preferences = null;
|
|
private SharedPreferences.Editor editor = null;
|
|
/**
|
|
* Id to identity READ_CONTACTS permission request.
|
|
*/
|
|
private static final int REQUEST_READ_CONTACTS = 0;
|
|
|
|
//New Location Changes
|
|
private FusedLocationProviderClient fusedLocationProviderClient;
|
|
LocationRequest locationRequest;
|
|
|
|
/**
|
|
* A dummy authentication store containing known user names and passwords.
|
|
* TODO: remove after connecting to a real authentication system.
|
|
*/
|
|
double lat = 0.0;
|
|
double lon = 0.0;
|
|
// UI references.
|
|
private AutoCompleteTextView museridView;
|
|
private EditText mPasswordView;
|
|
private View mProgressView;
|
|
private View mLoginFormView;
|
|
private String userid, password;
|
|
private int versionCode;
|
|
int eventType;
|
|
CardView museridSignInButton;
|
|
|
|
GoogleApiClient mGoogleApiClient;
|
|
private static int UPDATE_INTERVAL = 200; // 5 sec
|
|
private static int FATEST_INTERVAL = 100; // 1 sec
|
|
private static int DISPLACEMENT = 1; // 10 meters
|
|
private static final int REQUEST_LOCATION = 1;
|
|
private final static int PLAY_SERVICES_RESOLUTION_REQUEST = 1000;
|
|
private Location mLastLocation;
|
|
private LocationRequest mLocationRequest;
|
|
private Context context;
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
setContentView(R.layout.activity_login);
|
|
context = this;
|
|
|
|
TextView tv_version = (TextView) findViewById(R.id.tv_version_code);
|
|
try {
|
|
app_ver = String.valueOf(getPackageManager().getPackageInfo(getPackageName(), 0).versionName);
|
|
// login_version.setText("Parinaam Version " + app_ver);
|
|
} catch (PackageManager.NameNotFoundException e) {
|
|
// TODO Auto-generated catch block
|
|
e.printStackTrace();
|
|
}
|
|
|
|
tv_version.setText("Version/Versiyon - " + app_ver);
|
|
preferences = PreferenceManager.getDefaultSharedPreferences(context);
|
|
editor = preferences.edit();
|
|
// Set up the login form.
|
|
museridView = (AutoCompleteTextView) findViewById(R.id.userid);
|
|
//populateAutoComplete();
|
|
mPasswordView = (EditText) findViewById(R.id.password);
|
|
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
|
|
|
|
//for lebanon
|
|
// museridView.setText("test.lebanon1");
|
|
// mPasswordView.setText("cpm@123");
|
|
// for EGYPT
|
|
// museridView.setText("test.egypt");
|
|
// mPasswordView.setText("cpm123");
|
|
/*museridView.setText("egypt.1");
|
|
mPasswordView.setText("cpm123");*/
|
|
|
|
/* museridView.setText("DSR_Alex_61");
|
|
mPasswordView.setText("cpm123");*/
|
|
|
|
/* museridView.setText("DSR_Delta_24");
|
|
mPasswordView.setText("cpm123");*/
|
|
|
|
/* museridView.setText("mini_ka_84_1");
|
|
mPasswordView.setText("cpm123");*/
|
|
|
|
//UAE
|
|
/* museridView.setText("testuae");
|
|
mPasswordView.setText("cpm123");*/
|
|
/* museridView.setText("testuae1");
|
|
mPasswordView.setText("cpm123");*/
|
|
|
|
//KSA
|
|
/* museridView.setText("Esmail.d");
|
|
mPasswordView.setText("cpm@123");*/
|
|
/* museridView.setText("testksa");
|
|
mPasswordView.setText("cpm123");*/
|
|
/* museridView.setText("Ahmed.saied");
|
|
mPasswordView.setText("cpm@123");*/
|
|
/* museridView.setText("testksa");
|
|
mPasswordView.setText("cpm123");*/
|
|
|
|
/* //turkey
|
|
museridView.setText("testmer");
|
|
mPasswordView.setText("cpm123");
|
|
*/
|
|
//sa
|
|
/* museridView.setText("testsa");
|
|
mPasswordView.setText("cpm123");*/
|
|
|
|
//Qatar
|
|
/* museridView.setText("test.qatar1");
|
|
mPasswordView.setText("cpm123");*/
|
|
|
|
//Kenya
|
|
// museridView.setText("test.Kenya");
|
|
// museridView.setText("testkenya");
|
|
// mPasswordView.setText("cpm123");
|
|
|
|
/*museridView.setText("rajesh.r");
|
|
mPasswordView.setText("cpm123");*/
|
|
/* museridView.setText("testuae1");
|
|
mPasswordView.setText("cpm123");*/
|
|
|
|
//nig
|
|
// museridView.setText("test.nig");
|
|
/* museridView.setText("test.nigeria");
|
|
mPasswordView.setText("cpm@123");*/
|
|
|
|
/* museridView.setText("test.jordan");
|
|
mPasswordView.setText("cpm@123");*/
|
|
|
|
// museridView.setText("test.kuwait");
|
|
// mPasswordView.setText("cpm@123");
|
|
|
|
// museridView.setText("test.oman");
|
|
|
|
/* museridView.setText("test.bahrain");
|
|
mPasswordView.setText("cpm@123");
|
|
*/
|
|
|
|
mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
|
|
@Override
|
|
public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {
|
|
if (id == R.id.login || id == EditorInfo.IME_NULL) {
|
|
attemptLogin();
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
});
|
|
|
|
try {
|
|
app_ver = String.valueOf(getPackageManager().getPackageInfo(getPackageName(), 0).versionName);
|
|
// tv_version.setText("Version " + app_ver);
|
|
} catch (PackageManager.NameNotFoundException e) {
|
|
// TODO Auto-generated catch block
|
|
e.printStackTrace();
|
|
FirebaseCrashlytics.getInstance().recordException(e);
|
|
}
|
|
|
|
checkAndRequestPermissions();
|
|
mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
|
|
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
|
|
museridSignInButton = (CardView) findViewById(R.id.user_login_button);
|
|
museridSignInButton.setOnClickListener(new OnClickListener() {
|
|
@Override
|
|
public void onClick(View view) {
|
|
//checkAppPermission(Manifest.permission.CAMERA, MY_PERMISSIONS_REQUEST_CAMERA);
|
|
attemptLogin();
|
|
}
|
|
});
|
|
|
|
mLoginFormView = findViewById(R.id.login_form);
|
|
mProgressView = findViewById(R.id.login_progress);
|
|
}
|
|
|
|
private void checkAndRequestPermissions() {
|
|
//int permissionwrite_storage = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
|
int CAMERA = ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA);
|
|
int ACCESS_NETWORK_STATE = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_NETWORK_STATE);
|
|
int ACCESS_COARSE_LOCATION = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION);
|
|
int locationPermission = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);
|
|
//int READ_EXTERNAL_STORAGE = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE);
|
|
int READ_PHONE_STATE = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE);
|
|
List<String> listPermissionsNeeded = new ArrayList<>();
|
|
|
|
if (CAMERA != PackageManager.PERMISSION_GRANTED) {
|
|
listPermissionsNeeded.add(Manifest.permission.CAMERA);
|
|
}
|
|
|
|
if (ACCESS_NETWORK_STATE != PackageManager.PERMISSION_GRANTED) {
|
|
listPermissionsNeeded.add(Manifest.permission.ACCESS_NETWORK_STATE);
|
|
}
|
|
if (ACCESS_COARSE_LOCATION != PackageManager.PERMISSION_GRANTED) {
|
|
listPermissionsNeeded.add(Manifest.permission.ACCESS_COARSE_LOCATION);
|
|
}
|
|
if (locationPermission != PackageManager.PERMISSION_GRANTED) {
|
|
listPermissionsNeeded.add(Manifest.permission.ACCESS_FINE_LOCATION);
|
|
}
|
|
|
|
if (READ_PHONE_STATE != PackageManager.PERMISSION_GRANTED) {
|
|
listPermissionsNeeded.add(Manifest.permission.READ_PHONE_STATE);
|
|
}
|
|
|
|
if (!listPermissionsNeeded.isEmpty()) {
|
|
ActivityCompat.requestPermissions(this, listPermissionsNeeded.toArray(new String[listPermissionsNeeded.size()]), PERMISSION_ALL);
|
|
}
|
|
|
|
if (checkPlayServices()) {
|
|
// Building the GoogleApi client
|
|
buildGoogleApiClient();
|
|
createLocationRequest();
|
|
}
|
|
|
|
// Create an instance of GoogleAPIClient.
|
|
if (mGoogleApiClient == null) {
|
|
mGoogleApiClient = new GoogleApiClient.Builder(context)
|
|
.addConnectionCallbacks(this)
|
|
.addOnConnectionFailedListener(this)
|
|
.addApi(LocationServices.API)
|
|
.build();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
|
|
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
|
Log.d("", "Permission callback called-------");
|
|
|
|
if (checkPlayServices()) {
|
|
// Building the GoogleApi client
|
|
buildGoogleApiClient();
|
|
createLocationRequest();
|
|
}
|
|
|
|
// Create an instance of GoogleAPIClient.
|
|
if (mGoogleApiClient == null) {
|
|
mGoogleApiClient = new GoogleApiClient.Builder(this)
|
|
.addConnectionCallbacks(this)
|
|
.addOnConnectionFailedListener(this)
|
|
.addApi(LocationServices.API)
|
|
.build();
|
|
}
|
|
if (requestCode == PERMISSION_ALL) {
|
|
Map<String, Integer> perms = new HashMap<>();
|
|
// Initialize the map with both permissions
|
|
perms.put(Manifest.permission.CAMERA, PackageManager.PERMISSION_GRANTED);
|
|
perms.put(Manifest.permission.ACCESS_NETWORK_STATE, PackageManager.PERMISSION_GRANTED);
|
|
perms.put(Manifest.permission.ACCESS_COARSE_LOCATION, PackageManager.PERMISSION_GRANTED);
|
|
perms.put(Manifest.permission.ACCESS_FINE_LOCATION, PackageManager.PERMISSION_GRANTED);
|
|
perms.put(Manifest.permission.READ_PHONE_STATE, PackageManager.PERMISSION_GRANTED);
|
|
// Fill with actual results from user
|
|
if (grantResults.length > 0) {
|
|
for (int i = 0; i < permissions.length; i++)
|
|
perms.put(permissions[i], grantResults[i]);
|
|
// Check for both permissions//
|
|
if (perms.get(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
|
|
&& perms.get(Manifest.permission.ACCESS_NETWORK_STATE) == PackageManager.PERMISSION_GRANTED
|
|
&& perms.get(Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED
|
|
&& perms.get(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
|
|
&& perms.get(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
|
|
// imeiNumbers = imei.getDeviceImei();
|
|
Log.d("", "sms & location services permission granted");
|
|
// process the normal flow
|
|
//else any one or both the permissions are not granted
|
|
} else {
|
|
Log.d("", "Some permissions are not granted ask again ");
|
|
//permission is denied (this is the first time, when "never ask again" is not checked) so ask again explaining the usage of permission
|
|
// // shouldShowRequestPermissionRationale will return true
|
|
//show the dialog or snackbar saying its necessary and try again otherwise proceed with setup.
|
|
if (
|
|
ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA) ||
|
|
ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_NETWORK_STATE) ||
|
|
ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_COARSE_LOCATION) ||
|
|
ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION) ||
|
|
ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_EXTERNAL_STORAGE) ||
|
|
ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_PHONE_STATE)) {
|
|
showDialogOK("Location,Photos,media,file,manage phone calls and Camera Services Permission required for this app",
|
|
(dialog, which) -> {
|
|
switch (which) {
|
|
case DialogInterface.BUTTON_POSITIVE:
|
|
checkAndRequestPermissions();
|
|
break;
|
|
case DialogInterface.BUTTON_NEGATIVE:
|
|
// proceed with logic by disabling the related features or quit the app.
|
|
Intent startMain = new Intent(Intent.ACTION_MAIN);
|
|
startMain.addCategory(Intent.CATEGORY_HOME);
|
|
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
startActivity(startMain);
|
|
break;
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
private void showDialogOK(String message, DialogInterface.OnClickListener okListener) {
|
|
new androidx.appcompat.app.AlertDialog.Builder(this).setMessage(message).setPositiveButton("OK", okListener).setNegativeButton("Cancel", okListener).create().show();
|
|
}
|
|
|
|
/**
|
|
* Attempts to sign in or register the account specified by the login form.
|
|
* If there are form errors (invalid userid, missing fields, etc.), the
|
|
* errors are presented and no actual login attempt is made.
|
|
*/
|
|
private void attemptLogin() {
|
|
// Reset errors.
|
|
museridView.setError(null);
|
|
mPasswordView.setError(null);
|
|
|
|
// Store values at the time of the login attempt.
|
|
userid = museridView.getText().toString().trim();
|
|
password = mPasswordView.getText().toString().trim();
|
|
|
|
boolean cancel = false;
|
|
View focusView = null;
|
|
|
|
// Check for a valid password, if the user entered one.
|
|
if (TextUtils.isEmpty(password)) {
|
|
mPasswordView.setError(getString(R.string.error_invalid_password));
|
|
focusView = mPasswordView;
|
|
cancel = true;
|
|
}
|
|
|
|
// Check for a valid userid address.
|
|
if (TextUtils.isEmpty(userid)) {
|
|
museridView.setError(getString(R.string.error_field_required));
|
|
focusView = museridView;
|
|
cancel = true;
|
|
} /*else if (!isuseridValid(userid)) {
|
|
museridView.setError(getString(R.string.error_invalid_userid));
|
|
focusView = museridView;
|
|
cancel = true;
|
|
}*/
|
|
|
|
if (cancel) {
|
|
// There was an error; don't attempt login and focus the first
|
|
// form field with an error.
|
|
focusView.requestFocus();
|
|
|
|
} else if (!isuseridValid(userid)) {
|
|
Snackbar.make(museridView, getString(R.string.error_incorrect_username), Snackbar.LENGTH_SHORT).show();
|
|
} else if (!isPasswordValid(password)) {
|
|
Snackbar.make(museridView, getString(R.string.error_incorrect_password), Snackbar.LENGTH_SHORT).show();
|
|
} else {
|
|
new AuthenticateTask().execute();
|
|
}
|
|
}
|
|
|
|
private boolean isuseridValid(String userid) {
|
|
//TODO: Replace this with your own logic
|
|
|
|
boolean flag = true;
|
|
|
|
String u_id = preferences.getString(CommonString.KEY_USERNAME, "");
|
|
|
|
if (!u_id.equals("") && !userid.equalsIgnoreCase(u_id)) {
|
|
flag = false;
|
|
}
|
|
|
|
return flag;
|
|
}
|
|
|
|
private boolean isPasswordValid(String password) {
|
|
//TODO: Replace this with your own logic
|
|
boolean flag = true;
|
|
|
|
String pw = preferences.getString(CommonString.KEY_PASSWORD, "");
|
|
|
|
if (!pw.equals("") && !password.equals(pw)) {
|
|
flag = false;
|
|
}
|
|
|
|
return flag;
|
|
}
|
|
|
|
/**
|
|
* Shows the progress UI and hides the login form.
|
|
*/
|
|
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
|
|
private void showProgress(final boolean show) {
|
|
// On Honeycomb MR2 we have the ViewPropertyAnimator APIs, which allow
|
|
// for very easy animations. If available, use these APIs to fade-in
|
|
// the progress spinner.
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
|
|
int shortAnimTime = getResources().getInteger(android.R.integer.config_shortAnimTime);
|
|
|
|
mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE);
|
|
mLoginFormView.animate().setDuration(shortAnimTime).alpha(
|
|
show ? 0 : 1).setListener(new AnimatorListenerAdapter() {
|
|
@Override
|
|
public void onAnimationEnd(Animator animation) {
|
|
mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE);
|
|
}
|
|
});
|
|
|
|
mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
|
|
mProgressView.animate().setDuration(shortAnimTime).alpha(
|
|
show ? 1 : 0).setListener(new AnimatorListenerAdapter() {
|
|
@Override
|
|
public void onAnimationEnd(Animator animation) {
|
|
mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
|
|
}
|
|
});
|
|
} else {
|
|
// The ViewPropertyAnimator APIs are not available, so simply show
|
|
// and hide the relevant UI components.
|
|
mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
|
|
mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE);
|
|
}
|
|
}
|
|
|
|
/* @Override
|
|
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
|
|
return new CursorLoader(this,
|
|
// Retrieve data rows for the device user's 'profile' contact.
|
|
Uri.withAppendedPath(ContactsContract.Profile.CONTENT_URI,
|
|
ContactsContract.Contacts.Data.CONTENT_DIRECTORY), ProfileQuery.PROJECTION,
|
|
|
|
// Select only userid addresses.
|
|
ContactsContract.Contacts.Data.MIMETYPE +
|
|
" = ?", new String[]{ContactsContract.CommonDataKinds.userid
|
|
.CONTENT_ITEM_TYPE},
|
|
|
|
// Show primary userid addresses first. Note that there won't be
|
|
// a primary userid address if the user hasn't specified one.
|
|
ContactsContract.Contacts.Data.IS_PRIMARY + " DESC");
|
|
}
|
|
|
|
@Override
|
|
public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) {
|
|
List<String> userids = new ArrayList<>();
|
|
cursor.moveToFirst();
|
|
while (!cursor.isAfterLast()) {
|
|
userids.add(cursor.getString(ProfileQuery.ADDRESS));
|
|
cursor.moveToNext();
|
|
}
|
|
|
|
adduseridsToAutoComplete(userids);
|
|
}
|
|
|
|
@Override
|
|
public void onLoaderReset(Loader<Cursor> cursorLoader) {
|
|
|
|
}*/
|
|
|
|
private void adduseridsToAutoComplete(List<String> useridAddressCollection) {
|
|
//Create adapter to tell the AutoCompleteTextView what to show in its dropdown list.
|
|
ArrayAdapter<String> adapter =
|
|
new ArrayAdapter<>(LoginActivity.this,
|
|
android.R.layout.simple_dropdown_item_1line, useridAddressCollection);
|
|
|
|
museridView.setAdapter(adapter);
|
|
}
|
|
|
|
|
|
/* private interface ProfileQuery {
|
|
String[] PROJECTION = {
|
|
ContactsContract.CommonDataKinds.userid.ADDRESS,
|
|
ContactsContract.CommonDataKinds.userid.IS_PRIMARY,
|
|
};
|
|
|
|
int ADDRESS = 0;
|
|
int IS_PRIMARY = 1;
|
|
}*/
|
|
|
|
/**
|
|
* Represents an asynchronous login/registration task used to authenticate
|
|
* the user.
|
|
*/
|
|
|
|
private class AuthenticateTask extends AsyncTask<Void, Void, String> {
|
|
private ProgressDialog dialog = null;
|
|
|
|
@Override
|
|
protected void onPreExecute() {
|
|
super.onPreExecute();
|
|
dialog = new ProgressDialog(LoginActivity.this);
|
|
dialog.setTitle("Login");
|
|
dialog.setMessage("Authenticating....");
|
|
dialog.setCancelable(false);
|
|
dialog.show();
|
|
}
|
|
|
|
@Override
|
|
protected String doInBackground(Void... params) {
|
|
try {
|
|
Log.e("latitudedata", lat + "," + lon);
|
|
versionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
|
|
String userauth_xml = "[DATA]" + "[USER_DATA][USER_ID]"
|
|
+ userid + "[/USER_ID]" + "[PASSWORD]" + password
|
|
+ "[/PASSWORD]" + "[IN_TIME]" + CommonFunctions.getCurrentTimeWithLanguage(context)
|
|
+ "[/IN_TIME]" + "[LATITUDE]" + lat
|
|
+ "[/LATITUDE]" + "[LONGITUDE]" + lon
|
|
+ "[/LONGITUDE]" + "[APP_VERSION]" + app_ver
|
|
+ "[/APP_VERSION]" + "[ATT_MODE]OnLine[/ATT_MODE]"
|
|
+ "[NETWORK_STATUS]" + "LoginStatus"
|
|
+ "[/NETWORK_STATUS]" + "[/USER_DATA][/DATA]";
|
|
|
|
SoapObject request = new SoapObject(CommonString.NAMESPACE,
|
|
CommonString.METHOD_LOGIN);
|
|
request.addProperty("onXML", userauth_xml);
|
|
Log.d("loginrequest", String.valueOf(request));
|
|
|
|
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
|
|
envelope.dotNet = true;
|
|
envelope.setOutputSoapObject(request);
|
|
try {
|
|
HttpTransportSE androidHttpTransport = new HttpTransportSE(
|
|
CommonString.URL);
|
|
androidHttpTransport.call(CommonString.SOAP_ACTION_LOGIN,
|
|
envelope);
|
|
} catch (Exception e) {
|
|
Log.e("httpexception", e.getMessage());
|
|
}
|
|
|
|
Object result = (Object) envelope.getResponse();
|
|
if (result.toString().equalsIgnoreCase(CommonString.KEY_FAILURE)) {
|
|
runOnUiThread(() -> showAlert(CommonString.MESSAGE_FAILURE));
|
|
|
|
} else if (result.toString().equalsIgnoreCase(
|
|
CommonString.KEY_FALSE)) {
|
|
runOnUiThread(() -> showAlert(CommonString.MESSAGE_FALSE));
|
|
} else if (result.toString().equalsIgnoreCase(
|
|
CommonString.KEY_CHANGED)) {
|
|
runOnUiThread(() -> showAlert(CommonString.MESSAGE_CHANGED));
|
|
} else {
|
|
|
|
XmlPullParserFactory factory = XmlPullParserFactory
|
|
.newInstance();
|
|
factory.setNamespaceAware(true);
|
|
XmlPullParser xpp = factory.newPullParser();
|
|
|
|
xpp.setInput(new StringReader(result.toString()));
|
|
xpp.next();
|
|
eventType = xpp.getEventType();
|
|
final FailureGetterSetter failureGetterSetter = XMLHandlers
|
|
.failureXMLHandler(xpp, eventType);
|
|
|
|
if (failureGetterSetter.getStatus().equalsIgnoreCase(
|
|
CommonString.KEY_FAILURE)) {
|
|
runOnUiThread(() -> {
|
|
// TODO Auto-generated method stub
|
|
showAlert(CommonString.METHOD_LOGIN
|
|
+ failureGetterSetter.getErrorMsg());
|
|
});
|
|
} else {
|
|
|
|
|
|
// For String source
|
|
xpp.setInput(new StringReader(result.toString()));
|
|
xpp.next();
|
|
eventType = xpp.getEventType();
|
|
lgs = XMLHandlers.loginXMLHandler(xpp, eventType);
|
|
|
|
//PD_CONFIGURATION
|
|
request = new SoapObject(CommonString.NAMESPACE, CommonString.METHOD_NAME_UNIVERSAL_DOWNLOAD);
|
|
request.addProperty("UserName", userid);
|
|
request.addProperty("Type", "PD_CONFIGURATION");
|
|
request.addProperty("cultureid", "1");
|
|
envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
|
|
envelope.dotNet = true;
|
|
envelope.setOutputSoapObject(request);
|
|
HttpTransportSE androidHttpTransport = new HttpTransportSE(CommonString.URL);
|
|
androidHttpTransport.call(CommonString.SOAP_ACTION_UNIVERSAL, envelope);
|
|
result = envelope.getResponse();
|
|
xpp.setInput(new StringReader(result.toString()));
|
|
xpp.next();
|
|
eventType = xpp.getEventType();
|
|
PD_CONFIGURATION pdConfiguration = XMLHandlers.PDConfigXMLHandler(xpp);
|
|
Log.e("PD_CONFIGURATION_RESULT", result.toString());
|
|
// PUT IN PREFERENCES
|
|
if (pdConfiguration.getPROJECT_ID() != null && !pdConfiguration.getPROJECT_ID().isEmpty()) {
|
|
editor.putString(CommonString.KEY_PD_PROJECT_Id, pdConfiguration.getPROJECT_ID().get(0));
|
|
editor.putString(CommonString.KEY_PD_USER_Id, pdConfiguration.getUSER_ID().get(0));
|
|
} else {
|
|
return CommonString.KEY_FAILURE;
|
|
}
|
|
editor.putString(CommonString.KEY_USERNAME, userid);
|
|
editor.putString(CommonString.KEY_PASSWORD, password);
|
|
editor.putString(CommonString.KEY_VERSION, lgs.getAPP_VERSION());
|
|
editor.putString(CommonString.KEY_PATH, lgs.getAPP_PATH());
|
|
editor.putString(CommonString.KEY_DATE, lgs.getCURRENTDATE());
|
|
editor.putString(CommonString.KEY_COUNTRY_ID, lgs.getCOUNTRY_ID());
|
|
Log.e("countryid", lgs.getCOUNTRY_ID());
|
|
editor.commit();
|
|
setDataFromSharedPreferences(lgs);
|
|
Bundle bundle = new Bundle();
|
|
bundle.putString(FirebaseAnalytics.Param.ITEM_ID, userid);
|
|
bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, CommonString.KEY_LOGIN_DATA);
|
|
bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "Data");
|
|
bundle.putString(CommonString.KEY_LANGUAGE, preferences.getString(CommonString.KEY_LANGUAGE, ""));
|
|
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle);
|
|
FirebaseCrashlytics.getInstance().setUserId(userid.toLowerCase());
|
|
return CommonString.KEY_SUCCESS;
|
|
}
|
|
}
|
|
|
|
return "";
|
|
|
|
} catch (MalformedURLException e) {
|
|
FirebaseCrashlytics.getInstance().recordException(e);
|
|
runOnUiThread(new Runnable() {
|
|
|
|
@Override
|
|
public void run() {
|
|
|
|
showAlert(CommonString.MESSAGE_EXCEPTION);
|
|
}
|
|
});
|
|
|
|
} catch (IOException e) {
|
|
FirebaseCrashlytics.getInstance().recordException(e);
|
|
counter++;
|
|
runOnUiThread(() -> {
|
|
// TODO Auto-generated method stub
|
|
if (counter < 3) {
|
|
new AuthenticateTask().execute();
|
|
} else {
|
|
showAlert(getString(R.string.nonetwork));
|
|
counter = 1;
|
|
}
|
|
});
|
|
} catch (Exception e) {
|
|
FirebaseCrashlytics.getInstance().recordException(e);
|
|
runOnUiThread(() -> showAlert(CommonString.MESSAGE_EXCEPTION));
|
|
}
|
|
return "";
|
|
}
|
|
|
|
@Override
|
|
protected void onPostExecute(String result) {
|
|
super.onPostExecute(result);
|
|
if (result.equalsIgnoreCase(CommonString.KEY_SUCCESS)) {
|
|
// manually set true for South Africa
|
|
boolean forSA = false;
|
|
if (forSA) {
|
|
//For SA Only
|
|
if (preferences.getString(CommonString.KEY_LANGUAGE, "").equals("")) {
|
|
Intent intent = new Intent(getBaseContext(), SelectLanguageActivity.class);
|
|
intent.putExtra(CommonString.KEY_LOGIN_DATA, lgs);
|
|
startActivity(intent);
|
|
finish();
|
|
} else {
|
|
setLanguageDataFromSharedPreferences();
|
|
CommonFunctions.updateLangResources(context, preferences.getString(CommonString.KEY_LANGUAGE, ""));
|
|
Intent in = new Intent(context, MPinActivity.class);
|
|
in.putExtra(CommonString.IS_PASSWORD_CHECK, false);
|
|
startActivity(in);
|
|
finish();
|
|
//uploadPreviousImages();
|
|
}
|
|
} else {
|
|
//for other than SA
|
|
if (preferences.getString(CommonString.KEY_VERSION, "").equals(Integer.toString(versionCode))) {
|
|
if (preferences.getString(CommonString.KEY_LANGUAGE, "").equals("")) {
|
|
Intent intent = new Intent(getBaseContext(), SelectLanguageActivity.class);
|
|
intent.putExtra(CommonString.KEY_LOGIN_DATA, lgs);
|
|
startActivity(intent);
|
|
finish();
|
|
} else {
|
|
setLanguageDataFromSharedPreferences();
|
|
Intent in = new Intent(context, MPinActivity.class);
|
|
in.putExtra(CommonString.IS_PASSWORD_CHECK, false);
|
|
startActivity(in);
|
|
finish();
|
|
//uploadPreviousImages();
|
|
}
|
|
} else {
|
|
Intent intent = new Intent(getBaseContext(), AutoUpdateActivity.class);
|
|
intent.putExtra(CommonString.KEY_PATH, preferences.getString(CommonString.KEY_PATH, ""));
|
|
startActivity(intent);
|
|
finish();
|
|
}
|
|
}
|
|
}
|
|
dialog.dismiss();
|
|
}
|
|
}
|
|
|
|
public void showAlert(String str) {
|
|
|
|
AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
|
|
builder.setTitle("Parinaam");
|
|
builder.setMessage(str).setCancelable(false)
|
|
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
|
|
public void onClick(DialogInterface dialog, int id) {
|
|
|
|
/* Intent i = new Intent(activity, StorelistActivity.class);
|
|
activity.startActivity(i);
|
|
activity.finish();*/
|
|
|
|
}
|
|
});
|
|
AlertDialog alert = builder.create();
|
|
alert.show();
|
|
}
|
|
|
|
|
|
private static String arabicToenglish(String number) {
|
|
char[] chars = new char[number.length()];
|
|
for (int i = 0; i < number.length(); i++) {
|
|
char ch = number.charAt(i);
|
|
if (ch >= 0x0660 && ch <= 0x0669)
|
|
ch -= 0x0660 - '0';
|
|
else if (ch >= 0x06f0 && ch <= 0x06F9)
|
|
ch -= 0x06f0 - '0';
|
|
chars[i] = ch;
|
|
}
|
|
return new String(chars);
|
|
}
|
|
|
|
public String getCurrentTimeNotUsed() {
|
|
Calendar m_cal = Calendar.getInstance();
|
|
|
|
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
|
|
String cdate = formatter.format(m_cal.getTime());
|
|
|
|
if (preferences.getString(CommonString.KEY_LANGUAGE, "").equalsIgnoreCase(CommonString.KEY_LANGUAGE_ARABIC_KSA)) {
|
|
cdate = arabicToenglish(cdate);
|
|
} else if (preferences.getString(CommonString.KEY_LANGUAGE, "").equalsIgnoreCase(CommonString.KEY_LANGUAGE_ARABIC_UAE)) {
|
|
cdate = arabicToenglish(cdate);
|
|
} else if (preferences.getString(CommonString.KEY_LANGUAGE, "").equalsIgnoreCase(CommonString.KEY_LANGUAGE_ARABIC_JORDAN)) {
|
|
cdate = arabicToenglish(cdate);
|
|
} else if (preferences.getString(CommonString.KEY_LANGUAGE, "").equalsIgnoreCase(CommonString.KEY_LANGUAGE_ARABIC_KUWAIT)) {
|
|
cdate = arabicToenglish(cdate);
|
|
} else if (preferences.getString(CommonString.KEY_LANGUAGE, "").equalsIgnoreCase(CommonString.KEY_LANGUAGE_ARABIC_BAHRAIN)) {
|
|
cdate = arabicToenglish(cdate);
|
|
} else if (preferences.getString(CommonString.KEY_LANGUAGE, "").equalsIgnoreCase(CommonString.KEY_LANGUAGE_ARABIC_OMAN)) {
|
|
cdate = arabicToenglish(cdate);
|
|
} else if (preferences.getString(CommonString.KEY_LANGUAGE, "").equalsIgnoreCase(CommonString.KEY_LANGUAGE_ARABIC_QATAR)) {
|
|
cdate = arabicToenglish(cdate);
|
|
} else if (preferences.getString(CommonString.KEY_LANGUAGE, "").equalsIgnoreCase(CommonString.KEY_LANGUAGE_ARABIC_LEBANON)) {
|
|
cdate = arabicToenglish(cdate);
|
|
} else if (preferences.getString(CommonString.KEY_LANGUAGE, "").equalsIgnoreCase(CommonString.KEY_LANGUAGE_ARABIC_LIBIYA)) {
|
|
cdate = arabicToenglish(cdate);
|
|
}
|
|
return cdate;
|
|
}
|
|
|
|
|
|
private void setDataFromSharedPreferences(LoginGetterSetter lgs) {
|
|
Gson gson = new Gson();
|
|
String jsonCurProduct = gson.toJson(lgs);
|
|
SharedPreferences.Editor editor = preferences.edit();
|
|
editor.putString(CommonString.KEY_LOOGIN_PREF, jsonCurProduct);
|
|
editor.commit();
|
|
}
|
|
|
|
void checkAppPermission(String permission, int requestCode) {
|
|
|
|
boolean permission_flag = false;
|
|
// Here, thisActivity is the current activity
|
|
if (ContextCompat.checkSelfPermission(LoginActivity.this,
|
|
permission)
|
|
!= PackageManager.PERMISSION_GRANTED) {
|
|
|
|
// Permission is not granted
|
|
// Should we show an explanation?
|
|
if (ActivityCompat.shouldShowRequestPermissionRationale(LoginActivity.this,
|
|
permission)) {
|
|
// Show an explanation to the user *asynchronously* -- don't block
|
|
// this thread waiting for the user's response! After the user
|
|
// sees the explanation, try again to request the permission.
|
|
showOnPermissiondenied(Manifest.permission.CAMERA, MY_PERMISSIONS_REQUEST_CAMERA, 1);
|
|
} else {
|
|
// No explanation needed; request the permission
|
|
ActivityCompat.requestPermissions(LoginActivity.this,
|
|
new String[]{permission},
|
|
requestCode);
|
|
|
|
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
|
|
// app-defined int constant. The callback method gets the
|
|
// result of the request.
|
|
}
|
|
} else {
|
|
// Permission has already been granted
|
|
if (requestCode == MY_PERMISSIONS_REQUEST_CAMERA) {
|
|
checkAppPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, MY_PERMISSIONS_REQUEST_STORAGE_WRITE);
|
|
} else if (requestCode == MY_PERMISSIONS_REQUEST_STORAGE_WRITE) {
|
|
checkAppPermission(Manifest.permission.READ_EXTERNAL_STORAGE, MY_PERMISSIONS_REQUEST_STORAGE_READ);
|
|
} else if (requestCode == MY_PERMISSIONS_REQUEST_STORAGE_READ) {
|
|
checkAppPermission(Manifest.permission.ACCESS_FINE_LOCATION, MY_PERMISSIONS_REQUEST_LOCATION);
|
|
} else {
|
|
if (checkPlayServices()) {
|
|
// Building the GoogleApi client
|
|
buildGoogleApiClient();
|
|
|
|
createLocationRequest();
|
|
}
|
|
|
|
// Create an instance of GoogleAPIClient.
|
|
if (mGoogleApiClient == null) {
|
|
mGoogleApiClient = new GoogleApiClient.Builder(this)
|
|
.addConnectionCallbacks(this)
|
|
.addOnConnectionFailedListener(this)
|
|
.addApi(LocationServices.API)
|
|
.build();
|
|
}
|
|
attemptLogin();
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
void showOnPermissiondenied(final String permissionsRequired, final int request_code, final int check) {
|
|
AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
|
|
builder.setTitle("Need Multiple Permissions");
|
|
builder.setMessage("This app needs Camera, Storage and Location permissions.");
|
|
builder.setPositiveButton("Grant", new DialogInterface.OnClickListener() {
|
|
@Override
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
dialog.cancel();
|
|
if (check == 0) {
|
|
checkAppPermission(permissionsRequired, request_code);
|
|
} else {
|
|
ActivityCompat.requestPermissions(LoginActivity.this,
|
|
new String[]{permissionsRequired},
|
|
request_code);
|
|
}
|
|
|
|
}
|
|
});
|
|
/* builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
|
|
@Override
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
dialog.cancel();
|
|
finish();
|
|
}
|
|
});*/
|
|
builder.show();
|
|
}
|
|
|
|
@Override
|
|
protected void onResume() {
|
|
super.onResume();
|
|
|
|
if (mGoogleApiClient != null) {
|
|
mGoogleApiClient.connect();
|
|
|
|
}
|
|
checkgpsEnableDevice();
|
|
locationRequest = new LocationRequest.Builder(Priority.PRIORITY_HIGH_ACCURACY, 100000)
|
|
.setWaitForAccurateLocation(false)
|
|
.setMinUpdateIntervalMillis(IMPLICIT_MIN_UPDATE_INTERVAL)
|
|
.setMaxUpdateDelayMillis(1000)
|
|
.build();
|
|
LocationCallback locationCallback = new LocationCallback() {
|
|
@Override
|
|
public void onLocationResult(LocationResult locationResult) {
|
|
if (locationResult != null) {
|
|
if (locationResult == null) {
|
|
return;
|
|
}
|
|
//Showing the latitude, longitude and accuracy on the home screen.
|
|
for (Location location : locationResult.getLocations()) {
|
|
lat = location.getLatitude();
|
|
lon = location.getLongitude();
|
|
// Log.e("latitude_inside",location.getLatitude() + "," +location.getLongitude());
|
|
}
|
|
}
|
|
}
|
|
};
|
|
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
|
|
&& ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
|
ActivityCompat.requestPermissions(LoginActivity.this, new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, 1);
|
|
ActivityCompat.requestPermissions(LoginActivity.this, new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION}, 2);
|
|
}
|
|
fusedLocationProviderClient.requestLocationUpdates(locationRequest, locationCallback, Looper.getMainLooper());
|
|
}
|
|
|
|
/*@Override
|
|
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
|
|
|
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
|
checkAppPermission(Manifest.permission.CAMERA, MY_PERMISSIONS_REQUEST_CAMERA);
|
|
|
|
if (checkPlayServices()) {
|
|
// Building the GoogleApi client
|
|
buildGoogleApiClient();
|
|
createLocationRequest();
|
|
}
|
|
|
|
// Create an instance of GoogleAPIClient.
|
|
if (mGoogleApiClient == null) {
|
|
mGoogleApiClient = new GoogleApiClient.Builder(this)
|
|
.addConnectionCallbacks(this)
|
|
.addOnConnectionFailedListener(this)
|
|
.addApi(LocationServices.API)
|
|
.build();
|
|
}
|
|
|
|
}
|
|
*/
|
|
private boolean checkPlayServices() {
|
|
int resultCode = GooglePlayServicesUtil
|
|
.isGooglePlayServicesAvailable(this);
|
|
if (resultCode != ConnectionResult.SUCCESS) {
|
|
if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
|
|
GooglePlayServicesUtil.getErrorDialog(resultCode, this,
|
|
PLAY_SERVICES_RESOLUTION_REQUEST).show();
|
|
} else {
|
|
Toast.makeText(context, getResources().getString(R.string.notsuppoted), Toast.LENGTH_LONG)
|
|
.show();
|
|
finish();
|
|
}
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
protected synchronized void buildGoogleApiClient() {
|
|
if (mGoogleApiClient == null) {
|
|
mGoogleApiClient = new GoogleApiClient.Builder(context)
|
|
.addConnectionCallbacks(this)
|
|
.addOnConnectionFailedListener(this)
|
|
.addApi(LocationServices.API)
|
|
.build();
|
|
}
|
|
}
|
|
|
|
protected void createLocationRequest() {
|
|
mLocationRequest = new LocationRequest();
|
|
mLocationRequest.setInterval(UPDATE_INTERVAL);
|
|
mLocationRequest.setFastestInterval(FATEST_INTERVAL);
|
|
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
|
|
mLocationRequest.setSmallestDisplacement(DISPLACEMENT);
|
|
}
|
|
|
|
@Override
|
|
public void onConnectionSuspended(int i) {
|
|
mGoogleApiClient.connect();
|
|
}
|
|
|
|
@Override
|
|
public void onLocationChanged(Location location) {
|
|
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
|
|
|
|
// Toast.makeText(this, " WORKS_lat_lon " + latLng, Toast.LENGTH_LONG).show();
|
|
// updateLocation(latLng);
|
|
if (mGoogleApiClient != null) {
|
|
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
|
|
}
|
|
|
|
}
|
|
|
|
protected void startLocationUpdates() {
|
|
|
|
if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
|
|
|| ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
|
|
if (mGoogleApiClient != null) {
|
|
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
|
|
// Toast.makeText(getApplicationContext(), "startLocation - Lat" + lat + "Long" + lon, Toast.LENGTH_LONG).show();
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public static int distFrom(double lat1, double lng1, double lat2, double lng2) {
|
|
double earthRadius = 6371000; //meters
|
|
double dLat = Math.toRadians(lat2 - lat1);
|
|
double dLng = Math.toRadians(lng2 - lng1);
|
|
double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
|
|
Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
|
|
Math.sin(dLng / 2) * Math.sin(dLng / 2);
|
|
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
|
|
int dist = (int) (earthRadius * c);
|
|
|
|
return dist;
|
|
}
|
|
|
|
@Override
|
|
public void onConnected(Bundle bundle) {
|
|
Log.e("onConnectdata", "true" + "," + mGoogleApiClient);
|
|
/*if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
|
// TODO: Consider calling
|
|
// ActivityCompat#requestPermissions
|
|
// here to request the missing permissions, and then overriding
|
|
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
|
|
// int[] grantResults)
|
|
// to handle the case where the user grants the permission. See the documentation
|
|
// for ActivityCompat#requestPermissions for more details.
|
|
return;
|
|
}
|
|
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
|
|
if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
|
|
|| ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
|
|
if (mLastLocation != null) {
|
|
lat = mLastLocation.getLatitude();
|
|
lon = mLastLocation.getLongitude();
|
|
// Toast.makeText(getApplicationContext(), "onconnected lat-" + lat + " Long-" + lon, Toast.LENGTH_SHORT).show();
|
|
}
|
|
startLocationUpdates();
|
|
}*/
|
|
}
|
|
|
|
@Override
|
|
public void onConnectionFailed(ConnectionResult connectionResult) {
|
|
if (mGoogleApiClient != null) {
|
|
mGoogleApiClient.connect();
|
|
}
|
|
}
|
|
|
|
protected void onStart() {
|
|
super.onStart();
|
|
if (mGoogleApiClient != null) {
|
|
mGoogleApiClient.connect();
|
|
}
|
|
}
|
|
|
|
private boolean checkgpsEnableDevice() {
|
|
boolean flag = true;
|
|
if (!hasGPSDevice(context)) {
|
|
Toast.makeText(context, "Gps not Supported", Toast.LENGTH_SHORT).show();
|
|
}
|
|
final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
|
|
if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER) && hasGPSDevice(context)) {
|
|
enableLoc();
|
|
flag = false;
|
|
} else if (manager.isProviderEnabled(LocationManager.GPS_PROVIDER) && hasGPSDevice(context)) {
|
|
flag = true;
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
private boolean hasGPSDevice(Context context) {
|
|
final LocationManager mgr = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
|
|
if (mgr == null)
|
|
return false;
|
|
final List<String> providers = mgr.getAllProviders();
|
|
if (providers == null)
|
|
return false;
|
|
return providers.contains(LocationManager.GPS_PROVIDER);
|
|
}
|
|
|
|
private void enableLoc() {
|
|
LocationRequest locationRequest = LocationRequest.create();
|
|
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
|
|
locationRequest.setInterval(30 * 1000);
|
|
locationRequest.setFastestInterval(5 * 1000);
|
|
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder().addLocationRequest(locationRequest);
|
|
builder.setAlwaysShow(true);
|
|
if (mGoogleApiClient != null) {
|
|
PendingResult<LocationSettingsResult> result = LocationServices.SettingsApi.checkLocationSettings(mGoogleApiClient, builder.build());
|
|
result.setResultCallback(new ResultCallback<LocationSettingsResult>() {
|
|
@Override
|
|
public void onResult(LocationSettingsResult result) {
|
|
final Status status = result.getStatus();
|
|
switch (status.getStatusCode()) {
|
|
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
|
|
try {
|
|
// Show the dialog by calling startResolutionForResult(),
|
|
// and check the result in onActivityResult().
|
|
status.startResolutionForResult((Activity) context, REQUEST_LOCATION);
|
|
} catch (IntentSender.SendIntentException e) {
|
|
// Ignore the error.
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
ArrayList<String> language, culture_id, notice_url;
|
|
|
|
LoginGetterSetter login_data;
|
|
|
|
private void setLanguageDataFromSharedPreferences() {
|
|
Gson gson = new Gson();
|
|
login_data = new LoginGetterSetter();
|
|
|
|
String jsonPreferences = preferences.getString(CommonString.KEY_LOOGIN_PREF, "");
|
|
|
|
Type type = new TypeToken<LoginGetterSetter>() {
|
|
}.getType();
|
|
login_data = gson.fromJson(jsonPreferences, type);
|
|
|
|
language = login_data.getCULTURE_NAME();
|
|
culture_id = login_data.getCULTURE_ID();
|
|
notice_url = login_data.getNOTICE_URL();
|
|
|
|
String lang = preferences.getString(CommonString.KEY_LANGUAGE, "");
|
|
|
|
if (language.size() > 0) {
|
|
for (int i = 0; i < language.size(); i++) {
|
|
if (lang.equals(language.get(i))) {
|
|
editor.putString(CommonString.KEY_LANGUAGE, language.get(i));
|
|
editor.putString(CommonString.KEY_CULTURE_ID, culture_id.get(i));
|
|
editor.putString(CommonString.KEY_NOTICE_BOARD_LINK, notice_url.get(i));
|
|
editor.commit();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
//return ;
|
|
}
|
|
}
|
|
|