Rev 21169 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package com.saholic.profittill;import android.Manifest;import android.app.AlertDialog;import android.app.ProgressDialog;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.content.SharedPreferences;import android.content.pm.PackageManager;import android.net.ConnectivityManager;import android.net.Uri;import android.os.AsyncTask;import android.os.Build;import android.os.Bundle;import android.support.annotation.NonNull;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.support.v7.app.ActionBarActivity;import android.telephony.TelephonyManager;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.widget.ProgressBar;import android.widget.Toast;import com.google.android.gms.analytics.HitBuilders;import com.google.android.gms.analytics.Tracker;import com.google.android.gms.common.ConnectionResult;import com.google.android.gms.common.api.GoogleApiClient;import com.google.firebase.iid.FirebaseInstanceId;import com.saholic.profittill.Constants.ProfitTillConstants;import com.saholic.profittill.Utils.UtilityFunctions;import com.saholic.profittill.main.BasicInformation;import com.saholic.profittill.main.GoogleAnalyticsTracker;import com.saholic.profittill.main.LoginActivity;import com.saholic.profittill.main.MainActivity;import com.saholic.profittill.main.MobileNumber;import com.saholic.profittill.main.PendingActivity;import com.testin.agent.TestinAgent;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;import org.json.JSONArray;import org.json.JSONObject;import java.util.ArrayList;public class SplashScreen extends ActionBarActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener{SharedPreferences apiData, userData, apkData;SharedPreferences.Editor apiEditor, userEditor, apkDataEditor,userDataEditor;UtilityFunctions utilityFunctions;AlertDialog dialog1;AlertDialog.Builder b;ProgressBar pd;FirebaseInstanceId fcm;String regId;ArrayList<NameValuePair> apkDataListValue;ArrayList<NameValuePair> nameValuePairsGcm;public static final int READ_PHONE_STATE_PERMISSION = 100;private boolean PermissionIngranted=false;@Overrideprotected void onCreate(Bundle savedInstanceState) {TestinAgent.init(this);super.onCreate(savedInstanceState);setContentView(R.layout.activity_splash_screen);getSupportActionBar().hide();userData = getApplicationContext().getSharedPreferences("User_Data", MODE_PRIVATE);apkData = getApplicationContext().getSharedPreferences("APK_Data", MODE_PRIVATE);apiData = getApplicationContext().getSharedPreferences("API_Data", MODE_PRIVATE);apkDataEditor = apkData.edit();userEditor = userData.edit();apiEditor = apiData.edit();if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, READ_PHONE_STATE_PERMISSION);}else{PermissionIngranted=true;}String url = "";Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(GoogleAnalyticsTracker.TrackerName.APP_TRACKER);t.setScreenName("Splash Screen");t.send(new HitBuilders.ScreenViewBuilder().build());try {String apkVersionCode = apkData.getString("versionCode","");String apkVersionName = apkData.getString("versionName","");if(userData.getString("id","").isEmpty()) {}else {if (apkVersionCode.isEmpty()) {utilityFunctions=new UtilityFunctions();apkDataListValue = utilityFunctions.getDeviceInformation(this);if(isInternetOn()) {new pushApkData().execute();}} else if (!(apkData.getString("checkId","blank").equalsIgnoreCase(userData.getString("id","blank")))) {utilityFunctions=new UtilityFunctions();apkDataListValue = utilityFunctions.getDeviceInformation(this);if(isInternetOn()) {new pushApkData().execute();}} else if (Integer.parseInt(apkVersionCode) == getPackageManager().getPackageInfo(getPackageName(), 0).versionCode) {} else {utilityFunctions=new UtilityFunctions();apkDataListValue = utilityFunctions.getDeviceInformation(this);if(isInternetOn()) {new pushApkData().execute();}}}}catch (Exception e){e.printStackTrace();}if(isInternetOn()){if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {requestphoneUpdates();}else{new fetchAPISettings().execute();}}else{b= new AlertDialog.Builder(this);b.setMessage("No internet connection. Please try again.");b.setCancelable(false);b.setPositiveButton("Retry", new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {if(isInternetOn()){new fetchAPISettings().execute();dialog1.dismiss();}else{dialog1 = b.create();dialog1.show();}}});b.setNegativeButton("No", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {finish();}});dialog1 = b.create();dialog1.show();}}public void requestphoneUpdates(){if (ContextCompat.checkSelfPermission(SplashScreen.this,Manifest.permission.READ_PHONE_STATE)!= PackageManager.PERMISSION_GRANTED) {if (ActivityCompat.shouldShowRequestPermissionRationale(SplashScreen.this,Manifest.permission.READ_PHONE_STATE)) {} else {ActivityCompat.requestPermissions(SplashScreen.this,new String[]{Manifest.permission.READ_PHONE_STATE},READ_PHONE_STATE_PERMISSION);}return;}}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);switch (requestCode){case READ_PHONE_STATE_PERMISSION:try {if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {PermissionIngranted = true;if(isInternetOn()) {new fetchAPISettings().execute();} else {b = new AlertDialog.Builder(this);b.setMessage("No internet connection. Please try again.");b.setCancelable(false);b.setPositiveButton("Retry", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {if (isInternetOn()) {new fetchAPISettings().execute();dialog1.dismiss();} else {dialog1 = b.create();dialog1.show();}}});b.setNegativeButton("No", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {finish();}});dialog1 = b.create();dialog1.show();}}else {Toast.makeText(getApplicationContext(),"Permission is required to enter in application",Toast.LENGTH_LONG).show();PermissionIngranted = false;}}catch (Exception e){e.printStackTrace();}break;}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.menu_splash_screen, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}@Overridepublic void onConnected(Bundle bundle) {requestphoneUpdates();}@Overridepublic void onConnectionSuspended(int i) {}@Overridepublic void onConnectionFailed(ConnectionResult connectionResult) {}class fetchAPISettings extends AsyncTask<String, Integer, JSONObject> {@Overrideprotected void onPreExecute() {super.onPreExecute();}@Overrideprotected JSONObject doInBackground(String... arg0) {try {TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);HttpClient httpclient = new DefaultHttpClient();String url = ProfitTillConstants.MOBILE_API+"?t="+apkData.getString("timestamp","0")+"&imeinumber="+telephonyManager.getDeviceId();HttpPost httppost=new HttpPost(url);httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);HttpResponse response = httpclient.execute(httppost);HttpEntity entity = response.getEntity();JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));return jObjGmail;} catch (Exception e) {e.printStackTrace();return null;}}@Overrideprotected void onPostExecute(JSONObject result) {super.onPostExecute(result);if(result==null){finish();}try {JSONArray objects = result.getJSONArray("settings");if(objects.length()==0){System.out.println("Null settings array");}else {for (int i = 0; i < objects.length(); i++) {JSONObject jsonObject = objects.getJSONObject(i);JSONObject j = jsonObject.getJSONObject("Mobileappsetting");apiEditor.remove(j.getString("setting"));apiEditor.commit();apiEditor.putString(j.getString("setting"), j.getString("value"));apiEditor.commit();}}String timestamp=result.getString("t");String failureCount=result.getString("failureCount");apkDataEditor.putString("timestamp",timestamp);apkDataEditor.commit();final String idCheck = userData.getString("id",null);if(Integer.parseInt(failureCount)<=0) {if(userData.getString("docsSubmitted","false").equalsIgnoreCase("true")){Intent i = new Intent(SplashScreen.this, PendingActivity.class);startActivity(i);}else if (userData.getString("referralCodeRequired", "false").equalsIgnoreCase("true")) {Intent startActivityIntent=new Intent(SplashScreen.this, BasicInformation.class);startActivity(startActivityIntent);} else if (userData.getString("message", "false").equalsIgnoreCase("true")) {Intent startActivityIntent=new Intent(SplashScreen.this, MobileNumber.class);Intent intent = getIntent();if (Intent.ACTION_VIEW.equals(intent.getAction())) {Uri uri = intent.getData();startActivityIntent.setAction("31");startActivityIntent.setData(Uri.parse(uri.toString()));}startActivity(startActivityIntent);} else if (idCheck != null) {Intent startActivityIntent=new Intent(SplashScreen.this, MainActivity.class);Intent intent = getIntent();if (Intent.ACTION_VIEW.equals(intent.getAction())) {Uri uri = intent.getData();startActivityIntent.setAction("31");startActivityIntent.setData(Uri.parse(uri.toString()));}startActivity(startActivityIntent);} else {Intent startActivityIntent=new Intent(SplashScreen.this,LoginActivity .class);Intent intent = getIntent();if (Intent.ACTION_VIEW.equals(intent.getAction())) {Uri uri = intent.getData();startActivityIntent.setAction("31");startActivityIntent.setData(Uri.parse(uri.toString()));}startActivity(startActivityIntent);}}else{registerGCM();}}catch (Exception e){finish();}}}class pushApkData extends AsyncTask<String, Integer, String> {@Overrideprotected void onPreExecute() {super.onPreExecute();}@Overrideprotected String doInBackground(String... arg0) {try {HttpClient httpclient = new DefaultHttpClient();HttpPost httppost = new HttpPost("http://api.profittill.com/devices/add");httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);httppost.setEntity(new UrlEncodedFormEntity(apkDataListValue));HttpResponse response = httpclient.execute(httppost);HttpEntity entity = response.getEntity();int status = response.getStatusLine().getStatusCode();if(status == 200){apkDataEditor.putString("checkId",userData.getString("id",""));apkDataEditor.commit();return "success";} else {return "failure";}} catch (Exception e) {return null;}}@Overrideprotected void onPostExecute(String result) {super.onPostExecute(result);}}public final boolean isInternetOn() {ConnectivityManager connection =(ConnectivityManager)getSystemService(this.getBaseContext().CONNECTIVITY_SERVICE);if ( connection.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||connection.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED ) {return true;} else if (connection.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||connection.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||connection.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||connection.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED ) {return false;}return false;}private void showProgressDialog(){pDlg = new ProgressDialog(getApplicationContext());pDlg.setIndeterminate(true);pDlg.setCancelable(false);pDlg.show();}ProgressDialog pDlg;public void registerGCM() {// gcm = GoogleCloudMessaging.getInstance(SplashScreen.this);registerInBackground();}private void registerInBackground() {new AsyncTask<Void, Void, String>() {@Overrideprotected String doInBackground(Void... params) {String msg = "";if (fcm == null) {regId = FirebaseInstanceId.getInstance().getToken();msg = "Device registered";}return msg;}@Overrideprotected void onPostExecute(String msg) {if(userData.getString("fcm_token_sent","false").equalsIgnoreCase("false")) {new gcmPushData().execute(msg);}}}.execute(null, null, null);}class gcmPushData extends AsyncTask<String, Integer, String> {@Overrideprotected void onPreExecute() {super.onPreExecute();}@Overrideprotected String doInBackground(String... arg0) {String id = null;try {HttpClient httpclient = new DefaultHttpClient();HttpPost httppost = new HttpPost(apiData.getString("gcm.push.url", "http://api.profittill.com/gcm_users/add"));nameValuePairsGcm = new ArrayList<>();TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);nameValuePairsGcm.add(new BasicNameValuePair("gcm_regid", regId));nameValuePairsGcm.add(new BasicNameValuePair("imeinumber", telephonyManager.getDeviceId()));nameValuePairsGcm.add(new BasicNameValuePair("user_id", userData.getString("id", null)));nameValuePairsGcm.add(new BasicNameValuePair("device_message", arg0[0]));nameValuePairsGcm.add(new BasicNameValuePair("notification_type","fcm"));nameValuePairsGcm.add(new BasicNameValuePair("androidid", UtilityFunctions.androidId(SplashScreen.this)));httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);httppost.setEntity(new UrlEncodedFormEntity(nameValuePairsGcm));HttpResponse response = httpclient.execute(httppost);HttpEntity entity = response.getEntity();int status = response.getStatusLine().getStatusCode();if(status == 200){Log.d("ResponseCode GCM ",status+"");userDataEditor.putString("fcm_token_sent", "true");userDataEditor.commit();} else {Log.d("ResponseCode GCM ",status+"");}nameValuePairsGcm.clear();Log.e("pass 1", "connection success ");} catch (Exception e) {Log.e("Fail 1", e.toString());}return id;}@Overrideprotected void onPostExecute(String result) {super.onPostExecute(result);final String idCheck = userData.getString("id",null);if(userData.getString("docsSubmitted","false").equalsIgnoreCase("true")){Intent i = new Intent(SplashScreen.this, PendingActivity.class);startActivity(i);}else if (userData.getString("referralCodeRequired", "false").equalsIgnoreCase("true")) {Intent startActivityIntent=new Intent(SplashScreen.this, BasicInformation.class);Intent intent = getIntent();if (Intent.ACTION_VIEW.equals(intent.getAction())) {Uri uri = intent.getData();startActivityIntent.setAction("31");startActivityIntent.setData(Uri.parse(uri.toString()));}startActivity(startActivityIntent);//startActivity(new Intent(SplashScreen.this, ReferrerActivity.class));}else if (userData.getString("message", "false").equalsIgnoreCase("true")) {Intent startActivityIntent=new Intent(SplashScreen.this, MobileNumber.class);Intent intent = getIntent();if (Intent.ACTION_VIEW.equals(intent.getAction())) {Uri uri = intent.getData();startActivityIntent.setAction("31");startActivityIntent.setData(Uri.parse(uri.toString()));}startActivity(startActivityIntent);//startActivity(new Intent(SplashScreen.this, MobileNumber.class));} else if (idCheck != null) {Intent startActivityIntent=new Intent(SplashScreen.this, MainActivity.class);Intent intent = getIntent();if (Intent.ACTION_VIEW.equals(intent.getAction())) {Uri uri = intent.getData();startActivityIntent.setAction("31");startActivityIntent.setData(Uri.parse(uri.toString()));}startActivity(startActivityIntent);} else {Intent startActivityIntent=new Intent(SplashScreen.this, LoginActivity.class);Intent intent = getIntent();if (Intent.ACTION_VIEW.equals(intent.getAction())) {Uri uri = intent.getData();startActivityIntent.setAction("31");startActivityIntent.setData(Uri.parse(uri.toString()));}startActivity(startActivityIntent);//startActivity(new Intent(SplashScreen.this, LoginActivity.class));}}}}