Subversion Repositories SmartDukaan

Rev

Rev 15588 | Rev 16278 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
14792 manas 1
package com.saholic.profittill;
2
 
3
import android.app.AlertDialog;
4
import android.app.ProgressDialog;
5
import android.content.Context;
6
import android.content.DialogInterface;
7
import android.content.Intent;
8
import android.content.SharedPreferences;
9
import android.net.ConnectivityManager;
16080 manas 10
import android.net.Uri;
14792 manas 11
import android.os.AsyncTask;
12
import android.os.Bundle;
13
import android.support.v7.app.ActionBarActivity;
14
import android.telephony.TelephonyManager;
14991 manas 15
import android.util.Log;
14792 manas 16
import android.view.Menu;
17
import android.view.MenuItem;
18
import android.widget.ProgressBar;
19
 
20
import com.google.android.gms.analytics.HitBuilders;
21
import com.google.android.gms.analytics.Tracker;
15588 manas 22
import com.google.android.gms.gcm.GoogleCloudMessaging;
14792 manas 23
import com.saholic.profittill.Constants.ProfitTillConstants;
14991 manas 24
import com.saholic.profittill.Utils.UtilityFunctions;
14792 manas 25
import com.saholic.profittill.main.GoogleAnalyticsTracker;
26
import com.saholic.profittill.main.LoginActivity;
27
import com.saholic.profittill.main.MainActivity;
28
import com.saholic.profittill.main.MobileNumber;
29
import com.saholic.profittill.main.ReferrerActivity;
30
import com.testin.agent.TestinAgent;
31
 
32
import org.apache.http.HttpEntity;
33
import org.apache.http.HttpResponse;
34
import org.apache.http.NameValuePair;
35
import org.apache.http.client.HttpClient;
36
import org.apache.http.client.entity.UrlEncodedFormEntity;
37
import org.apache.http.client.methods.HttpPost;
38
import org.apache.http.impl.client.DefaultHttpClient;
39
import org.apache.http.message.BasicNameValuePair;
40
import org.apache.http.util.EntityUtils;
41
import org.json.JSONArray;
42
import org.json.JSONObject;
43
 
15588 manas 44
import java.io.IOException;
14792 manas 45
import java.util.ArrayList;
46
 
47
 
48
public class SplashScreen extends ActionBarActivity {
49
    SharedPreferences apiData, userData,apkData;
50
    SharedPreferences.Editor apiEditor,userEditor,apkDataEditor;
14991 manas 51
    UtilityFunctions utilityFunctions;
14792 manas 52
    AlertDialog dialog1;
53
    AlertDialog.Builder b;
54
    ProgressBar pd;
15588 manas 55
    GoogleCloudMessaging gcm;
56
    String regId;
14792 manas 57
    ArrayList<NameValuePair> apkDataListValue;
15588 manas 58
    ArrayList<NameValuePair> nameValuePairsGcm;
14792 manas 59
    @Override
60
    protected void onCreate(Bundle savedInstanceState) {
61
        TestinAgent.init(this);
62
        super.onCreate(savedInstanceState);
63
        setContentView(R.layout.activity_splash_screen);
64
        getSupportActionBar().hide();
65
        userData = getApplicationContext().getSharedPreferences("User_Data", MODE_PRIVATE);
66
        apkData = getApplicationContext().getSharedPreferences("APK_Data", MODE_PRIVATE);
67
        apiData = getApplicationContext().getSharedPreferences("API_Data", MODE_PRIVATE);
68
        apkDataEditor = apkData.edit();
69
        userEditor = userData.edit();
70
        apiEditor = apiData.edit();
71
        String url="";
72
        Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
73
                GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
74
        t.setScreenName("Splash Screen");
75
        t.send(new HitBuilders.ScreenViewBuilder().build());
76
        try {
77
            String apkVersionCode = apkData.getString("versionCode","");
78
            String apkVersionName = apkData.getString("versionName","");
79
            if(userData.getString("id","").isEmpty()) {
80
 
81
            }else {
82
                if (apkVersionCode.isEmpty()) {
14991 manas 83
                    /*PackageManager manager = this.getPackageManager();
14792 manas 84
                    PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0);
85
                    TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
86
                    apkDataListValue = new ArrayList<>();
87
                    apkDataListValue.add(new BasicNameValuePair("user_id",userData.getString("id","")));
88
                    apkDataListValue.add(new BasicNameValuePair("versioncode",info.versionCode+""));
89
                    apkDataListValue.add(new BasicNameValuePair("versionname",info.versionName+""));
90
                    apkDataListValue.add(new BasicNameValuePair("osversion",android.os.Build.VERSION.SDK_INT+""));
91
                    apkDataListValue.add(new BasicNameValuePair("imeinumber",telephonyManager.getDeviceId()));
92
                    apkDataListValue.add(new BasicNameValuePair("manufacturer",Build.MANUFACTURER));
93
                    apkDataListValue.add(new BasicNameValuePair("model",Build.MODEL));
94
                    apkDataListValue.add(new BasicNameValuePair("brand",Build.BRAND));
95
                    apkDataEditor.putString("versionCode", info.versionCode + "");
96
                    apkDataEditor.putString("versionName", info.versionName);
97
                    apkDataEditor.putString("osVersion",android.os.Build.VERSION.SDK_INT+"");
14991 manas 98
                    apkDataEditor.putString("imeiNumber",telephonyManager.getDeviceId());*/
99
                    utilityFunctions=new UtilityFunctions();
100
                    apkDataListValue = utilityFunctions.getDeviceInformation(this);
14792 manas 101
 
102
                    if(isInternetOn()) {
103
                        new pushApkData().execute();
104
                    }
105
                } else if (!(apkData.getString("checkId","blank").equalsIgnoreCase(userData.getString("id","blank")))) {
14991 manas 106
                    utilityFunctions=new UtilityFunctions();
107
                    apkDataListValue = utilityFunctions.getDeviceInformation(this);
14792 manas 108
                    if(isInternetOn()) {
109
                        new pushApkData().execute();
110
                    }
111
                } else if (Integer.parseInt(apkVersionCode) == getPackageManager().getPackageInfo(getPackageName(), 0).versionCode) {
112
 
113
                }  else {
14991 manas 114
                    utilityFunctions=new UtilityFunctions();
115
                    apkDataListValue = utilityFunctions.getDeviceInformation(this);
14792 manas 116
                    if(isInternetOn()) {
117
                        new pushApkData().execute();
118
                    }
119
                }
120
            }
121
        }catch (Exception e){
122
            e.printStackTrace();
123
        }
124
 
125
 
126
        if(isInternetOn()){
127
                new fetchAPISettings().execute();
128
        }
129
        else{
130
            b= new AlertDialog.Builder(this);
131
            b.setMessage("No internet connection. Please try again.");
132
            b.setCancelable(false);
133
            b.setPositiveButton("Retry", new DialogInterface.OnClickListener()
134
            {
135
                @Override
136
                public void onClick(DialogInterface dialog, int which) {
137
                    if(isInternetOn()){
138
                        new fetchAPISettings().execute();
139
                        dialog1.dismiss();
140
                    }
141
                    else{
142
                        dialog1 = b.create();
143
                        dialog1.show();
144
                    }
145
                }
146
 
147
            });
148
            b.setNegativeButton("No", new DialogInterface.OnClickListener() {
149
                @Override
150
                public void onClick(DialogInterface dialog, int which) {
151
                    finish();
152
 
153
                }
154
            });
155
            dialog1 = b.create();
156
            dialog1.show();
157
        }
158
 
159
 
160
    }
161
 
162
 
163
    @Override
164
    public boolean onCreateOptionsMenu(Menu menu) {
165
        // Inflate the menu; this adds items to the action bar if it is present.
166
        getMenuInflater().inflate(R.menu.menu_splash_screen, menu);
167
        return true;
168
    }
169
 
170
    @Override
171
    public boolean onOptionsItemSelected(MenuItem item) {
172
        // Handle action bar item clicks here. The action bar will
173
        // automatically handle clicks on the Home/Up button, so long
174
        // as you specify a parent activity in AndroidManifest.xml.
175
        int id = item.getItemId();
176
 
177
        //noinspection SimplifiableIfStatement
178
        if (id == R.id.action_settings) {
179
            return true;
180
        }
181
 
182
        return super.onOptionsItemSelected(item);
183
    }
184
 
185
    class fetchAPISettings extends AsyncTask<String, Integer, JSONObject> {
186
 
187
        @Override
188
        protected void onPreExecute() {
189
            super.onPreExecute();
190
        }
191
 
192
        @Override
193
        protected JSONObject doInBackground(String... arg0) {
194
            try {
15588 manas 195
                TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
14792 manas 196
                HttpClient httpclient = new DefaultHttpClient();
15588 manas 197
                String url = ProfitTillConstants.MOBILE_API+"?t="+apkData.getString("timestamp","0")+"&imeinumber="+telephonyManager.getDeviceId();
198
                //HttpPost httppost = new HttpPost(ProfitTillConstants.MOBILE_API+"?t="+apkData.getString("timestamp","0"));
199
                HttpPost httppost=new HttpPost(url);
14792 manas 200
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
201
                HttpResponse response = httpclient.execute(httppost);
202
                HttpEntity entity = response.getEntity();
203
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
204
                System.out.println(jObjGmail.toString());
205
                return jObjGmail;
206
 
207
            } catch (Exception e) {
208
                return null;
209
 
210
            }
211
 
212
        }
213
        @Override
214
        protected void onPostExecute(JSONObject result) {
215
            super.onPostExecute(result);
216
            if(result==null){
217
                finish();
218
            }
219
            try {
220
                JSONArray objects = result.getJSONArray("settings");
221
                if(objects.length()==0){
222
                    System.out.println("Null settings array");
223
                }else {
224
                    for (int i = 0; i < objects.length(); i++) {
225
                        JSONObject jsonObject = objects.getJSONObject(i);
226
                        JSONObject j = jsonObject.getJSONObject("Mobileappsetting");
227
                        System.out.println("Setting " + j.getString("setting"));
228
                        System.out.println("Value " + j.getString("value"));
229
                        apiEditor.remove(j.getString("setting"));
230
                        apiEditor.commit();
231
                        apiEditor.putString(j.getString("setting"), j.getString("value"));
232
                        apiEditor.commit();
233
                    }
234
                }
235
                String timestamp=result.getString("t");
15588 manas 236
                String failureCount=result.getString("failureCount");
14792 manas 237
                apkDataEditor.putString("timestamp",timestamp);
238
                apkDataEditor.commit();
239
                final String idCheck = userData.getString("id",null);
240
                //String check = userData.getString("which screen needs to be displayed");
15588 manas 241
                if(Integer.parseInt(failureCount)<=0) {
242
                    if (userData.getString("referralCodeRequired", "false").equalsIgnoreCase("true")) {
243
                        startActivity(new Intent(SplashScreen.this, ReferrerActivity.class));
244
                    } else if (userData.getString("message", "false").equalsIgnoreCase("true")) {
245
                        startActivity(new Intent(SplashScreen.this, MobileNumber.class));
246
                    } else if (idCheck != null) {
16080 manas 247
                        Intent startActivityIntent=new Intent(SplashScreen.this, MainActivity.class);
248
                        Intent intent = getIntent();
249
                        if (Intent.ACTION_VIEW.equals(intent.getAction())) {
250
                            Uri uri = intent.getData();
251
                            startActivityIntent.setAction("31");
252
                            startActivityIntent.setData(Uri.parse(uri.toString()));
253
                        }
254
                        startActivity(startActivityIntent);
15588 manas 255
                    } else {
256
                        startActivity(new Intent(SplashScreen.this, LoginActivity.class));
14792 manas 257
 
15588 manas 258
                    }
259
                }else{
260
                    registerGCM();
14792 manas 261
                }
262
            }catch (Exception e){
263
                finish();
264
            }
265
        }
266
    }
267
 
268
    class pushApkData extends AsyncTask<String, Integer, String> {
269
 
270
        @Override
271
        protected void onPreExecute() {
272
            super.onPreExecute();
273
        }
274
 
275
        @Override
276
        protected String doInBackground(String... arg0) {
277
            try {
278
                HttpClient httpclient = new DefaultHttpClient();
279
                HttpPost httppost = new HttpPost("http://api.profittill.com/devices/add");
280
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
281
                httppost.setEntity(new UrlEncodedFormEntity(apkDataListValue));
282
                HttpResponse response = httpclient.execute(httppost);
283
                HttpEntity entity = response.getEntity();
284
                int status = response.getStatusLine().getStatusCode();
285
 
286
                if(status == 200){
287
                    apkDataEditor.putString("checkId",userData.getString("id",""));
288
                    apkDataEditor.commit();
289
                    return "success";
290
                } else {
291
                    return "failure";
292
                }
293
 
294
            } catch (Exception e) {
295
                return null;
296
 
297
            }
298
 
299
        }
300
        @Override
301
        protected void onPostExecute(String result) {
302
            super.onPostExecute(result);
303
         }
304
    }
305
 
306
 
307
    public final boolean isInternetOn() {
308
 
309
        ConnectivityManager connection =
310
                (ConnectivityManager)getSystemService(this.getBaseContext().CONNECTIVITY_SERVICE);
311
 
14991 manas 312
        if (    connection.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||
14792 manas 313
                connection.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED ) {
314
 
315
            /*Toast.makeText(this, " Connected ", Toast.LENGTH_LONG).show();*/
316
            return true;
317
 
318
        } else if (
14991 manas 319
                connection.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||
320
                        connection.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||
14792 manas 321
                connection.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||
322
                        connection.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED  ) {
323
 
14991 manas 324
/*            Toast.makeText(this, " Not Connected ", Toast.LENGTH_LONG).show();*/
14792 manas 325
            return false;
326
        }
327
        return false;
328
    }
329
 
330
    private void showProgressDialog()
331
    {
332
        pDlg =  new ProgressDialog(getApplicationContext());
333
        pDlg.setIndeterminate(true);
334
        pDlg.setCancelable(false);
335
        pDlg.show();
336
    }
337
 
338
    ProgressDialog pDlg;
14991 manas 339
 
340
/*
341
 
342
    @Override
343
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
344
        Log.d("On Restore Instance","On Restore Instance");
345
        super.onRestoreInstanceState(savedInstanceState);
346
    }
347
 
348
    @Override
349
    protected void onRestart() {
350
        Log.d("On Restart","On Restart");
351
        super.onRestart();
352
 
353
        try {
354
            String apkVersionCode = apkData.getString("versionCode","");
355
            String apkVersionName = apkData.getString("versionName","");
356
            if(userData.getString("id","").isEmpty()) {
357
 
358
            }else {
359
                if (apkVersionCode.isEmpty()) {
360
                    apkDataListValue = getDeviceInformation();
361
 
362
                    if(isInternetOn()) {
363
                        new pushApkData().execute();
364
                    }
365
                } else if (!(apkData.getString("checkId","blank").equalsIgnoreCase(userData.getString("id","blank")))) {
366
                    apkDataListValue = getDeviceInformation();
367
                    if(isInternetOn()) {
368
                        new pushApkData().execute();
369
                    }
370
                } else if (Integer.parseInt(apkVersionCode) == getPackageManager().getPackageInfo(getPackageName(), 0).versionCode) {
371
 
372
                }  else {
373
                    apkDataListValue = getDeviceInformation();
374
                    if(isInternetOn()) {
375
                        new pushApkData().execute();
376
                    }
377
                }
378
            }
379
        }catch (Exception e){
380
            e.printStackTrace();
381
        }
382
 
383
        if(isInternetOn()){
384
            new fetchAPISettings().execute();
385
        }
386
        else{
387
            b= new AlertDialog.Builder(this);
388
            b.setMessage("No internet connection. Please try again.");
389
            b.setCancelable(false);
390
            b.setPositiveButton("Retry", new DialogInterface.OnClickListener()
391
            {
392
                @Override
393
                public void onClick(DialogInterface dialog, int which) {
394
                    if(isInternetOn()){
395
                        new fetchAPISettings().execute();
396
                        dialog1.dismiss();
397
                    }
398
                    else{
399
                        dialog1 = b.create();
400
                        dialog1.show();
401
                    }
402
                }
403
 
404
            });
405
            b.setNegativeButton("No", new DialogInterface.OnClickListener() {
406
                @Override
407
                public void onClick(DialogInterface dialog, int which) {
408
                    finish();
409
 
410
                }
411
            });
412
            dialog1 = b.create();
413
            dialog1.show();
414
        }
415
 
416
    }
417
 
418
 
419
    public ArrayList<NameValuePair> getDeviceInformation(){
420
        ArrayList<NameValuePair> deviceDataList=null;
421
        try {
422
            PackageManager manager = this.getPackageManager();
423
            PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0);
424
            TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
425
            deviceDataList = new ArrayList<>();
426
            deviceDataList.add(new BasicNameValuePair("user_id", userData.getString("id", "")));
427
            deviceDataList.add(new BasicNameValuePair("versioncode", info.versionCode + ""));
428
            deviceDataList.add(new BasicNameValuePair("versionname", info.versionName + ""));
429
            deviceDataList.add(new BasicNameValuePair("osversion", android.os.Build.VERSION.SDK_INT + ""));
430
            deviceDataList.add(new BasicNameValuePair("imeinumber", telephonyManager.getDeviceId()));
431
            deviceDataList.add(new BasicNameValuePair("manufacturer", Build.MANUFACTURER));
432
            deviceDataList.add(new BasicNameValuePair("model", Build.MODEL));
433
            deviceDataList.add(new BasicNameValuePair("brand", Build.BRAND));
434
            apkDataEditor.putString("versionCode", info.versionCode + "");
435
            apkDataEditor.putString("versionName", info.versionName);
436
            apkDataEditor.putString("osVersion", android.os.Build.VERSION.SDK_INT + "");
437
            apkDataEditor.putString("imeiNumber", telephonyManager.getDeviceId());
438
        }catch (Exception e){
439
            e.printStackTrace();
440
        }
441
        return deviceDataList;
442
    }
443
*/
444
 
445
    /*@Override
446
    protected void onPause() {
447
        Log.d("On Pause","On Pause");
448
        super.onPause();
449
    }*/
15588 manas 450
    public void registerGCM() {
451
 
452
        gcm = GoogleCloudMessaging.getInstance(SplashScreen.this);
453
        registerInBackground();
454
 
455
    }
456
 
457
    private void registerInBackground() {
458
        new AsyncTask<Void, Void, String>() {
459
            @Override
460
            protected String doInBackground(Void... params) {
461
                String msg = "";
462
                try {
463
                    if (gcm == null) {
464
                        gcm = GoogleCloudMessaging.getInstance(SplashScreen.this);
465
                    }
466
                    regId = gcm.register(ProfitTillConstants.GOOGLE_SENDER_ID);
467
                    msg = "Device registered";
468
 
469
                } catch (IOException ex) {
470
                    msg = "Error :" + ex.getMessage();
471
                }
472
                return msg;
473
            }
474
 
475
            @Override
476
            protected void onPostExecute(String msg) {
477
                new gcmPushData().execute(msg);
478
            }
479
        }.execute(null, null, null);
480
    }
481
 
482
 
483
    class gcmPushData extends AsyncTask<String, Integer, String> {
484
 
485
        @Override
486
        protected void onPreExecute() {
487
            super.onPreExecute();
488
        }
489
 
490
        @Override
491
        protected String doInBackground(String... arg0) {
492
            String id = null;
493
            try {
494
                HttpClient httpclient = new DefaultHttpClient();
495
                HttpPost httppost = new HttpPost(apiData.getString("gcm.push.url", "http://staging.profittill.com/gcm_users/add"));
496
                nameValuePairsGcm = new ArrayList<>();
497
                TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
498
                nameValuePairsGcm.add(new BasicNameValuePair("gcm_regid", regId));
499
                nameValuePairsGcm.add(new BasicNameValuePair("imeinumber", telephonyManager.getDeviceId()));
500
                nameValuePairsGcm.add(new BasicNameValuePair("user_id", userData.getString("id", null)));
501
                nameValuePairsGcm.add(new BasicNameValuePair("device_message", arg0[0]));
502
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
503
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairsGcm));
504
                HttpResponse response = httpclient.execute(httppost);
505
                HttpEntity entity = response.getEntity();
506
                int status = response.getStatusLine().getStatusCode();
507
 
508
                if (status == 200) {
509
                    Log.d("ResponseCode GCM ", status + "");
510
                } else {
511
                    Log.d("ResponseCode GCM ", status + "");
512
                }
513
 
514
                nameValuePairsGcm.clear();
515
                Log.e("pass 1", "connection success ");
516
            } catch (Exception e) {
517
                Log.e("Fail 1", e.toString());
518
 
519
            }
520
            return id;
521
        }
522
 
523
        @Override
524
        protected void onPostExecute(String result) {
525
            super.onPostExecute(result);
526
            final String idCheck = userData.getString("id",null);
527
            if (userData.getString("referralCodeRequired", "false").equalsIgnoreCase("true")) {
528
                startActivity(new Intent(SplashScreen.this, ReferrerActivity.class));
529
            } else if (userData.getString("message", "false").equalsIgnoreCase("true")) {
530
                startActivity(new Intent(SplashScreen.this, MobileNumber.class));
531
            } else if (idCheck != null) {
16080 manas 532
                Intent startActivityIntent=new Intent(SplashScreen.this, MainActivity.class);
533
                Intent intent = getIntent();
534
                if (Intent.ACTION_VIEW.equals(intent.getAction())) {
535
                    Uri uri = intent.getData();
536
                    startActivityIntent.setAction("31");
537
                    startActivityIntent.setData(Uri.parse(uri.toString()));
538
                }
539
                startActivity(startActivityIntent);
15588 manas 540
            } else {
541
                startActivity(new Intent(SplashScreen.this, LoginActivity.class));
542
            }
543
        }
544
    }
14792 manas 545
}
15588 manas 546