Subversion Repositories SmartDukaan

Rev

Rev 16278 | Rev 18082 | 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();
17057 manas 71
        String url="";
14792 manas 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()) {
17057 manas 83
                    /*PackageManager manager = this.getPackageManager();
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+"");
98
                    apkDataEditor.putString("imeiNumber",telephonyManager.getDeviceId());*/
14991 manas 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) {
17057 manas 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.
14792 manas 175
        int id = item.getItemId();
17057 manas 176
 
177
        //noinspection SimplifiableIfStatement
14792 manas 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();
17057 manas 198
                //HttpPost httppost = new HttpPost(ProfitTillConstants.MOBILE_API+"?t="+apkData.getString("timestamp","0"));
15588 manas 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
                return jObjGmail;
205
 
206
            } catch (Exception e) {
207
                return null;
208
 
209
            }
210
 
211
        }
212
        @Override
213
        protected void onPostExecute(JSONObject result) {
214
            super.onPostExecute(result);
215
            if(result==null){
216
                finish();
217
            }
218
            try {
219
                JSONArray objects = result.getJSONArray("settings");
220
                if(objects.length()==0){
221
                    System.out.println("Null settings array");
222
                }else {
223
                    for (int i = 0; i < objects.length(); i++) {
224
                        JSONObject jsonObject = objects.getJSONObject(i);
225
                        JSONObject j = jsonObject.getJSONObject("Mobileappsetting");
226
                        apiEditor.remove(j.getString("setting"));
227
                        apiEditor.commit();
228
                        apiEditor.putString(j.getString("setting"), j.getString("value"));
229
                        apiEditor.commit();
230
                    }
231
                }
232
                String timestamp=result.getString("t");
15588 manas 233
                String failureCount=result.getString("failureCount");
14792 manas 234
                apkDataEditor.putString("timestamp",timestamp);
235
                apkDataEditor.commit();
236
                final String idCheck = userData.getString("id",null);
17057 manas 237
                //String check = userData.getString("which screen needs to be displayed");
15588 manas 238
                if(Integer.parseInt(failureCount)<=0) {
239
                    if (userData.getString("referralCodeRequired", "false").equalsIgnoreCase("true")) {
240
                        startActivity(new Intent(SplashScreen.this, ReferrerActivity.class));
241
                    } else if (userData.getString("message", "false").equalsIgnoreCase("true")) {
242
                        startActivity(new Intent(SplashScreen.this, MobileNumber.class));
243
                    } else if (idCheck != null) {
16080 manas 244
                        Intent startActivityIntent=new Intent(SplashScreen.this, MainActivity.class);
245
                        Intent intent = getIntent();
246
                        if (Intent.ACTION_VIEW.equals(intent.getAction())) {
247
                            Uri uri = intent.getData();
248
                            startActivityIntent.setAction("31");
249
                            startActivityIntent.setData(Uri.parse(uri.toString()));
250
                        }
251
                        startActivity(startActivityIntent);
15588 manas 252
                    } else {
253
                        startActivity(new Intent(SplashScreen.this, LoginActivity.class));
14792 manas 254
 
15588 manas 255
                    }
256
                }else{
257
                    registerGCM();
14792 manas 258
                }
259
            }catch (Exception e){
260
                finish();
261
            }
262
        }
263
    }
264
 
265
    class pushApkData extends AsyncTask<String, Integer, String> {
266
 
267
        @Override
268
        protected void onPreExecute() {
269
            super.onPreExecute();
270
        }
271
 
272
        @Override
273
        protected String doInBackground(String... arg0) {
274
            try {
275
                HttpClient httpclient = new DefaultHttpClient();
276
                HttpPost httppost = new HttpPost("http://api.profittill.com/devices/add");
277
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
278
                httppost.setEntity(new UrlEncodedFormEntity(apkDataListValue));
279
                HttpResponse response = httpclient.execute(httppost);
280
                HttpEntity entity = response.getEntity();
281
                int status = response.getStatusLine().getStatusCode();
282
 
283
                if(status == 200){
284
                    apkDataEditor.putString("checkId",userData.getString("id",""));
285
                    apkDataEditor.commit();
286
                    return "success";
287
                } else {
288
                    return "failure";
289
                }
290
 
291
            } catch (Exception e) {
292
                return null;
293
 
294
            }
295
 
296
        }
297
        @Override
298
        protected void onPostExecute(String result) {
299
            super.onPostExecute(result);
300
         }
301
    }
302
 
303
 
304
    public final boolean isInternetOn() {
305
 
306
        ConnectivityManager connection =
307
                (ConnectivityManager)getSystemService(this.getBaseContext().CONNECTIVITY_SERVICE);
308
 
14991 manas 309
        if (    connection.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||
14792 manas 310
                connection.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED ) {
311
 
312
            /*Toast.makeText(this, " Connected ", Toast.LENGTH_LONG).show();*/
313
            return true;
314
 
315
        } else if (
14991 manas 316
                connection.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||
317
                        connection.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||
14792 manas 318
                connection.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||
319
                        connection.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED  ) {
320
 
14991 manas 321
/*            Toast.makeText(this, " Not Connected ", Toast.LENGTH_LONG).show();*/
14792 manas 322
            return false;
323
        }
324
        return false;
325
    }
326
 
327
    private void showProgressDialog()
328
    {
329
        pDlg =  new ProgressDialog(getApplicationContext());
330
        pDlg.setIndeterminate(true);
331
        pDlg.setCancelable(false);
332
        pDlg.show();
333
    }
334
 
335
    ProgressDialog pDlg;
14991 manas 336
 
17057 manas 337
/*
338
 
339
    @Override
340
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
341
        Log.d("On Restore Instance","On Restore Instance");
342
        super.onRestoreInstanceState(savedInstanceState);
343
    }
344
 
345
    @Override
346
    protected void onRestart() {
347
        Log.d("On Restart","On Restart");
348
        super.onRestart();
349
 
350
        try {
351
            String apkVersionCode = apkData.getString("versionCode","");
352
            String apkVersionName = apkData.getString("versionName","");
353
            if(userData.getString("id","").isEmpty()) {
354
 
355
            }else {
356
                if (apkVersionCode.isEmpty()) {
357
                    apkDataListValue = getDeviceInformation();
358
 
359
                    if(isInternetOn()) {
360
                        new pushApkData().execute();
361
                    }
362
                } else if (!(apkData.getString("checkId","blank").equalsIgnoreCase(userData.getString("id","blank")))) {
363
                    apkDataListValue = getDeviceInformation();
364
                    if(isInternetOn()) {
365
                        new pushApkData().execute();
366
                    }
367
                } else if (Integer.parseInt(apkVersionCode) == getPackageManager().getPackageInfo(getPackageName(), 0).versionCode) {
368
 
369
                }  else {
370
                    apkDataListValue = getDeviceInformation();
371
                    if(isInternetOn()) {
372
                        new pushApkData().execute();
373
                    }
374
                }
375
            }
376
        }catch (Exception e){
377
            e.printStackTrace();
378
        }
379
 
380
        if(isInternetOn()){
381
            new fetchAPISettings().execute();
382
        }
383
        else{
384
            b= new AlertDialog.Builder(this);
385
            b.setMessage("No internet connection. Please try again.");
386
            b.setCancelable(false);
387
            b.setPositiveButton("Retry", new DialogInterface.OnClickListener()
388
            {
389
                @Override
390
                public void onClick(DialogInterface dialog, int which) {
391
                    if(isInternetOn()){
392
                        new fetchAPISettings().execute();
393
                        dialog1.dismiss();
394
                    }
395
                    else{
396
                        dialog1 = b.create();
397
                        dialog1.show();
398
                    }
399
                }
400
 
401
            });
402
            b.setNegativeButton("No", new DialogInterface.OnClickListener() {
403
                @Override
404
                public void onClick(DialogInterface dialog, int which) {
405
                    finish();
406
 
407
                }
408
            });
409
            dialog1 = b.create();
410
            dialog1.show();
411
        }
412
 
413
    }
414
 
415
 
416
    public ArrayList<NameValuePair> getDeviceInformation(){
417
        ArrayList<NameValuePair> deviceDataList=null;
418
        try {
419
            PackageManager manager = this.getPackageManager();
420
            PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0);
421
            TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
422
            deviceDataList = new ArrayList<>();
423
            deviceDataList.add(new BasicNameValuePair("user_id", userData.getString("id", "")));
424
            deviceDataList.add(new BasicNameValuePair("versioncode", info.versionCode + ""));
425
            deviceDataList.add(new BasicNameValuePair("versionname", info.versionName + ""));
426
            deviceDataList.add(new BasicNameValuePair("osversion", android.os.Build.VERSION.SDK_INT + ""));
427
            deviceDataList.add(new BasicNameValuePair("imeinumber", telephonyManager.getDeviceId()));
428
            deviceDataList.add(new BasicNameValuePair("manufacturer", Build.MANUFACTURER));
429
            deviceDataList.add(new BasicNameValuePair("model", Build.MODEL));
430
            deviceDataList.add(new BasicNameValuePair("brand", Build.BRAND));
431
            apkDataEditor.putString("versionCode", info.versionCode + "");
432
            apkDataEditor.putString("versionName", info.versionName);
433
            apkDataEditor.putString("osVersion", android.os.Build.VERSION.SDK_INT + "");
434
            apkDataEditor.putString("imeiNumber", telephonyManager.getDeviceId());
435
        }catch (Exception e){
436
            e.printStackTrace();
437
        }
438
        return deviceDataList;
439
    }
440
*/
441
 
442
    /*@Override
443
    protected void onPause() {
444
        Log.d("On Pause","On Pause");
445
        super.onPause();
446
    }*/
15588 manas 447
    public void registerGCM() {
448
 
449
        gcm = GoogleCloudMessaging.getInstance(SplashScreen.this);
450
        registerInBackground();
451
 
452
    }
453
 
454
    private void registerInBackground() {
455
        new AsyncTask<Void, Void, String>() {
456
            @Override
457
            protected String doInBackground(Void... params) {
458
                String msg = "";
459
                try {
460
                    if (gcm == null) {
461
                        gcm = GoogleCloudMessaging.getInstance(SplashScreen.this);
462
                    }
463
                    regId = gcm.register(ProfitTillConstants.GOOGLE_SENDER_ID);
464
                    msg = "Device registered";
465
 
466
                } catch (IOException ex) {
467
                    msg = "Error :" + ex.getMessage();
468
                }
469
                return msg;
470
            }
471
 
472
            @Override
473
            protected void onPostExecute(String msg) {
474
                new gcmPushData().execute(msg);
475
            }
476
        }.execute(null, null, null);
477
    }
478
 
479
 
480
    class gcmPushData extends AsyncTask<String, Integer, String> {
481
 
482
        @Override
483
        protected void onPreExecute() {
484
            super.onPreExecute();
485
        }
486
 
487
        @Override
488
        protected String doInBackground(String... arg0) {
489
            String id = null;
490
            try {
491
                HttpClient httpclient = new DefaultHttpClient();
17057 manas 492
                HttpPost httppost = new HttpPost(apiData.getString("gcm.push.url", "http://staging.profittill.com/gcm_users/add"));
15588 manas 493
                nameValuePairsGcm = new ArrayList<>();
494
                TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
495
                nameValuePairsGcm.add(new BasicNameValuePair("gcm_regid", regId));
496
                nameValuePairsGcm.add(new BasicNameValuePair("imeinumber", telephonyManager.getDeviceId()));
497
                nameValuePairsGcm.add(new BasicNameValuePair("user_id", userData.getString("id", null)));
498
                nameValuePairsGcm.add(new BasicNameValuePair("device_message", arg0[0]));
499
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
500
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairsGcm));
501
                HttpResponse response = httpclient.execute(httppost);
502
                HttpEntity entity = response.getEntity();
503
                int status = response.getStatusLine().getStatusCode();
504
 
505
                if (status == 200) {
506
                    Log.d("ResponseCode GCM ", status + "");
507
                } else {
508
                    Log.d("ResponseCode GCM ", status + "");
509
                }
510
 
511
                nameValuePairsGcm.clear();
512
                Log.e("pass 1", "connection success ");
513
            } catch (Exception e) {
514
                Log.e("Fail 1", e.toString());
515
 
516
            }
517
            return id;
518
        }
519
 
520
        @Override
521
        protected void onPostExecute(String result) {
522
            super.onPostExecute(result);
523
            final String idCheck = userData.getString("id",null);
524
            if (userData.getString("referralCodeRequired", "false").equalsIgnoreCase("true")) {
525
                startActivity(new Intent(SplashScreen.this, ReferrerActivity.class));
526
            } else if (userData.getString("message", "false").equalsIgnoreCase("true")) {
527
                startActivity(new Intent(SplashScreen.this, MobileNumber.class));
528
            } else if (idCheck != null) {
16080 manas 529
                Intent startActivityIntent=new Intent(SplashScreen.this, MainActivity.class);
530
                Intent intent = getIntent();
531
                if (Intent.ACTION_VIEW.equals(intent.getAction())) {
532
                    Uri uri = intent.getData();
533
                    startActivityIntent.setAction("31");
534
                    startActivityIntent.setData(Uri.parse(uri.toString()));
535
                }
536
                startActivity(startActivityIntent);
15588 manas 537
            } else {
538
                startActivity(new Intent(SplashScreen.this, LoginActivity.class));
539
            }
540
        }
541
    }
17057 manas 542
}