Subversion Repositories SmartDukaan

Rev

Rev 16080 | Rev 17057 | 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;
16278 manas 24
import com.saholic.profittill.Utils.AnalyticsUtility;
14991 manas 25
import com.saholic.profittill.Utils.UtilityFunctions;
16278 manas 26
import com.saholic.profittill.Volley.Analytics;
27
import com.saholic.profittill.Volley.AnalyticsErrorResponse;
28
import com.saholic.profittill.Volley.AnalyticsJsonResponse;
14792 manas 29
import com.saholic.profittill.main.GoogleAnalyticsTracker;
30
import com.saholic.profittill.main.LoginActivity;
31
import com.saholic.profittill.main.MainActivity;
32
import com.saholic.profittill.main.MobileNumber;
33
import com.saholic.profittill.main.ReferrerActivity;
34
import com.testin.agent.TestinAgent;
35
 
36
import org.apache.http.HttpEntity;
37
import org.apache.http.HttpResponse;
38
import org.apache.http.NameValuePair;
39
import org.apache.http.client.HttpClient;
40
import org.apache.http.client.entity.UrlEncodedFormEntity;
41
import org.apache.http.client.methods.HttpPost;
42
import org.apache.http.impl.client.DefaultHttpClient;
43
import org.apache.http.message.BasicNameValuePair;
44
import org.apache.http.util.EntityUtils;
45
import org.json.JSONArray;
46
import org.json.JSONObject;
47
 
15588 manas 48
import java.io.IOException;
14792 manas 49
import java.util.ArrayList;
50
 
51
 
52
public class SplashScreen extends ActionBarActivity {
53
    SharedPreferences apiData, userData,apkData;
54
    SharedPreferences.Editor apiEditor,userEditor,apkDataEditor;
14991 manas 55
    UtilityFunctions utilityFunctions;
14792 manas 56
    AlertDialog dialog1;
57
    AlertDialog.Builder b;
58
    ProgressBar pd;
15588 manas 59
    GoogleCloudMessaging gcm;
60
    String regId;
14792 manas 61
    ArrayList<NameValuePair> apkDataListValue;
15588 manas 62
    ArrayList<NameValuePair> nameValuePairsGcm;
14792 manas 63
    @Override
64
    protected void onCreate(Bundle savedInstanceState) {
65
        TestinAgent.init(this);
66
        super.onCreate(savedInstanceState);
67
        setContentView(R.layout.activity_splash_screen);
68
        getSupportActionBar().hide();
69
        userData = getApplicationContext().getSharedPreferences("User_Data", MODE_PRIVATE);
70
        apkData = getApplicationContext().getSharedPreferences("APK_Data", MODE_PRIVATE);
71
        apiData = getApplicationContext().getSharedPreferences("API_Data", MODE_PRIVATE);
72
        apkDataEditor = apkData.edit();
73
        userEditor = userData.edit();
74
        apiEditor = apiData.edit();
75
        Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
76
                GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
77
        t.setScreenName("Splash Screen");
78
        t.send(new HitBuilders.ScreenViewBuilder().build());
79
        try {
80
            String apkVersionCode = apkData.getString("versionCode","");
81
            String apkVersionName = apkData.getString("versionName","");
82
            if(userData.getString("id","").isEmpty()) {
83
 
84
            }else {
85
                if (apkVersionCode.isEmpty()) {
14991 manas 86
                    utilityFunctions=new UtilityFunctions();
87
                    apkDataListValue = utilityFunctions.getDeviceInformation(this);
14792 manas 88
 
89
                    if(isInternetOn()) {
16278 manas 90
                        new Analytics(ProfitTillConstants.ANALYTICS_URL,
91
                                AnalyticsUtility.getAnalyticsRequest(SplashScreen.this, userData.getString("id", ""), "Screen", "Splash", "Splash Screen"),
92
                                AnalyticsJsonResponse.getAnalyticsRequestInstance(),
93
                                AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(SplashScreen.this);
14792 manas 94
                        new pushApkData().execute();
95
                    }
96
                } else if (!(apkData.getString("checkId","blank").equalsIgnoreCase(userData.getString("id","blank")))) {
14991 manas 97
                    utilityFunctions=new UtilityFunctions();
98
                    apkDataListValue = utilityFunctions.getDeviceInformation(this);
14792 manas 99
                    if(isInternetOn()) {
16278 manas 100
                        new Analytics(ProfitTillConstants.ANALYTICS_URL,
101
                                AnalyticsUtility.getAnalyticsRequest(SplashScreen.this, userData.getString("id", ""), "Screen", "Splash", "Splash Screen"),
102
                                AnalyticsJsonResponse.getAnalyticsRequestInstance(),
103
                                AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(SplashScreen.this);
14792 manas 104
                        new pushApkData().execute();
105
                    }
106
                } else if (Integer.parseInt(apkVersionCode) == getPackageManager().getPackageInfo(getPackageName(), 0).versionCode) {
107
 
108
                }  else {
14991 manas 109
                    utilityFunctions=new UtilityFunctions();
110
                    apkDataListValue = utilityFunctions.getDeviceInformation(this);
14792 manas 111
                    if(isInternetOn()) {
16278 manas 112
                        new Analytics(ProfitTillConstants.ANALYTICS_URL,
113
                                AnalyticsUtility.getAnalyticsRequest(SplashScreen.this, userData.getString("id", ""), "Screen", "Splash", "Splash Screen"),
114
                                AnalyticsJsonResponse.getAnalyticsRequestInstance(),
115
                                AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(SplashScreen.this);
14792 manas 116
                        new pushApkData().execute();
117
                    }
118
                }
119
            }
120
        }catch (Exception e){
121
            e.printStackTrace();
122
        }
123
 
124
 
125
        if(isInternetOn()){
126
                new fetchAPISettings().execute();
127
        }
128
        else{
129
            b= new AlertDialog.Builder(this);
130
            b.setMessage("No internet connection. Please try again.");
131
            b.setCancelable(false);
132
            b.setPositiveButton("Retry", new DialogInterface.OnClickListener()
133
            {
134
                @Override
135
                public void onClick(DialogInterface dialog, int which) {
136
                    if(isInternetOn()){
137
                        new fetchAPISettings().execute();
138
                        dialog1.dismiss();
139
                    }
140
                    else{
141
                        dialog1 = b.create();
142
                        dialog1.show();
143
                    }
144
                }
145
 
146
            });
147
            b.setNegativeButton("No", new DialogInterface.OnClickListener() {
148
                @Override
149
                public void onClick(DialogInterface dialog, int which) {
150
                    finish();
151
 
152
                }
153
            });
154
            dialog1 = b.create();
155
            dialog1.show();
156
        }
157
 
158
 
159
    }
160
 
161
 
162
    @Override
163
    public boolean onCreateOptionsMenu(Menu menu) {
164
        // Inflate the menu; this adds items to the action bar if it is present.
165
        getMenuInflater().inflate(R.menu.menu_splash_screen, menu);
166
        return true;
167
    }
168
 
169
    @Override
170
    public boolean onOptionsItemSelected(MenuItem item) {
171
        int id = item.getItemId();
172
        if (id == R.id.action_settings) {
173
            return true;
174
        }
175
 
176
        return super.onOptionsItemSelected(item);
177
    }
178
 
179
    class fetchAPISettings extends AsyncTask<String, Integer, JSONObject> {
180
 
181
        @Override
182
        protected void onPreExecute() {
183
            super.onPreExecute();
184
        }
185
 
186
        @Override
187
        protected JSONObject doInBackground(String... arg0) {
188
            try {
15588 manas 189
                TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
14792 manas 190
                HttpClient httpclient = new DefaultHttpClient();
15588 manas 191
                String url = ProfitTillConstants.MOBILE_API+"?t="+apkData.getString("timestamp","0")+"&imeinumber="+telephonyManager.getDeviceId();
192
                HttpPost httppost=new HttpPost(url);
14792 manas 193
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
194
                HttpResponse response = httpclient.execute(httppost);
195
                HttpEntity entity = response.getEntity();
196
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
197
                return jObjGmail;
198
 
199
            } catch (Exception e) {
200
                return null;
201
 
202
            }
203
 
204
        }
205
        @Override
206
        protected void onPostExecute(JSONObject result) {
207
            super.onPostExecute(result);
208
            if(result==null){
209
                finish();
210
            }
211
            try {
212
                JSONArray objects = result.getJSONArray("settings");
213
                if(objects.length()==0){
214
                    System.out.println("Null settings array");
215
                }else {
216
                    for (int i = 0; i < objects.length(); i++) {
217
                        JSONObject jsonObject = objects.getJSONObject(i);
218
                        JSONObject j = jsonObject.getJSONObject("Mobileappsetting");
219
                        System.out.println("Setting " + j.getString("setting"));
220
                        System.out.println("Value " + j.getString("value"));
221
                        apiEditor.remove(j.getString("setting"));
222
                        apiEditor.commit();
223
                        apiEditor.putString(j.getString("setting"), j.getString("value"));
224
                        apiEditor.commit();
225
                    }
226
                }
227
                String timestamp=result.getString("t");
15588 manas 228
                String failureCount=result.getString("failureCount");
14792 manas 229
                apkDataEditor.putString("timestamp",timestamp);
230
                apkDataEditor.commit();
231
                final String idCheck = userData.getString("id",null);
15588 manas 232
                if(Integer.parseInt(failureCount)<=0) {
233
                    if (userData.getString("referralCodeRequired", "false").equalsIgnoreCase("true")) {
234
                        startActivity(new Intent(SplashScreen.this, ReferrerActivity.class));
235
                    } else if (userData.getString("message", "false").equalsIgnoreCase("true")) {
236
                        startActivity(new Intent(SplashScreen.this, MobileNumber.class));
237
                    } else if (idCheck != null) {
16080 manas 238
                        Intent startActivityIntent=new Intent(SplashScreen.this, MainActivity.class);
239
                        Intent intent = getIntent();
240
                        if (Intent.ACTION_VIEW.equals(intent.getAction())) {
241
                            Uri uri = intent.getData();
242
                            startActivityIntent.setAction("31");
243
                            startActivityIntent.setData(Uri.parse(uri.toString()));
244
                        }
245
                        startActivity(startActivityIntent);
15588 manas 246
                    } else {
247
                        startActivity(new Intent(SplashScreen.this, LoginActivity.class));
14792 manas 248
 
15588 manas 249
                    }
250
                }else{
251
                    registerGCM();
14792 manas 252
                }
253
            }catch (Exception e){
254
                finish();
255
            }
256
        }
257
    }
258
 
259
    class pushApkData extends AsyncTask<String, Integer, String> {
260
 
261
        @Override
262
        protected void onPreExecute() {
263
            super.onPreExecute();
264
        }
265
 
266
        @Override
267
        protected String doInBackground(String... arg0) {
268
            try {
269
                HttpClient httpclient = new DefaultHttpClient();
270
                HttpPost httppost = new HttpPost("http://api.profittill.com/devices/add");
271
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
272
                httppost.setEntity(new UrlEncodedFormEntity(apkDataListValue));
273
                HttpResponse response = httpclient.execute(httppost);
274
                HttpEntity entity = response.getEntity();
275
                int status = response.getStatusLine().getStatusCode();
276
 
277
                if(status == 200){
278
                    apkDataEditor.putString("checkId",userData.getString("id",""));
279
                    apkDataEditor.commit();
280
                    return "success";
281
                } else {
282
                    return "failure";
283
                }
284
 
285
            } catch (Exception e) {
286
                return null;
287
 
288
            }
289
 
290
        }
291
        @Override
292
        protected void onPostExecute(String result) {
293
            super.onPostExecute(result);
294
         }
295
    }
296
 
297
 
298
    public final boolean isInternetOn() {
299
 
300
        ConnectivityManager connection =
301
                (ConnectivityManager)getSystemService(this.getBaseContext().CONNECTIVITY_SERVICE);
302
 
14991 manas 303
        if (    connection.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||
14792 manas 304
                connection.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED ) {
305
 
306
            /*Toast.makeText(this, " Connected ", Toast.LENGTH_LONG).show();*/
307
            return true;
308
 
309
        } else if (
14991 manas 310
                connection.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||
311
                        connection.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||
14792 manas 312
                connection.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||
313
                        connection.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED  ) {
314
 
14991 manas 315
/*            Toast.makeText(this, " Not Connected ", Toast.LENGTH_LONG).show();*/
14792 manas 316
            return false;
317
        }
318
        return false;
319
    }
320
 
321
    private void showProgressDialog()
322
    {
323
        pDlg =  new ProgressDialog(getApplicationContext());
324
        pDlg.setIndeterminate(true);
325
        pDlg.setCancelable(false);
326
        pDlg.show();
327
    }
328
 
329
    ProgressDialog pDlg;
14991 manas 330
 
15588 manas 331
    public void registerGCM() {
332
 
333
        gcm = GoogleCloudMessaging.getInstance(SplashScreen.this);
334
        registerInBackground();
335
 
336
    }
337
 
338
    private void registerInBackground() {
339
        new AsyncTask<Void, Void, String>() {
340
            @Override
341
            protected String doInBackground(Void... params) {
342
                String msg = "";
343
                try {
344
                    if (gcm == null) {
345
                        gcm = GoogleCloudMessaging.getInstance(SplashScreen.this);
346
                    }
347
                    regId = gcm.register(ProfitTillConstants.GOOGLE_SENDER_ID);
348
                    msg = "Device registered";
349
 
350
                } catch (IOException ex) {
351
                    msg = "Error :" + ex.getMessage();
352
                }
353
                return msg;
354
            }
355
 
356
            @Override
357
            protected void onPostExecute(String msg) {
358
                new gcmPushData().execute(msg);
359
            }
360
        }.execute(null, null, null);
361
    }
362
 
363
 
364
    class gcmPushData extends AsyncTask<String, Integer, String> {
365
 
366
        @Override
367
        protected void onPreExecute() {
368
            super.onPreExecute();
369
        }
370
 
371
        @Override
372
        protected String doInBackground(String... arg0) {
373
            String id = null;
374
            try {
375
                HttpClient httpclient = new DefaultHttpClient();
16278 manas 376
                HttpPost httppost = new HttpPost(apiData.getString("gcm.push.url", "http://api.profittill.com/gcm_users/add"));
15588 manas 377
                nameValuePairsGcm = new ArrayList<>();
378
                TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
379
                nameValuePairsGcm.add(new BasicNameValuePair("gcm_regid", regId));
380
                nameValuePairsGcm.add(new BasicNameValuePair("imeinumber", telephonyManager.getDeviceId()));
381
                nameValuePairsGcm.add(new BasicNameValuePair("user_id", userData.getString("id", null)));
382
                nameValuePairsGcm.add(new BasicNameValuePair("device_message", arg0[0]));
383
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
384
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairsGcm));
385
                HttpResponse response = httpclient.execute(httppost);
386
                HttpEntity entity = response.getEntity();
387
                int status = response.getStatusLine().getStatusCode();
388
 
389
                if (status == 200) {
390
                    Log.d("ResponseCode GCM ", status + "");
391
                } else {
392
                    Log.d("ResponseCode GCM ", status + "");
393
                }
394
 
395
                nameValuePairsGcm.clear();
396
                Log.e("pass 1", "connection success ");
397
            } catch (Exception e) {
398
                Log.e("Fail 1", e.toString());
399
 
400
            }
401
            return id;
402
        }
403
 
404
        @Override
405
        protected void onPostExecute(String result) {
406
            super.onPostExecute(result);
407
            final String idCheck = userData.getString("id",null);
408
            if (userData.getString("referralCodeRequired", "false").equalsIgnoreCase("true")) {
409
                startActivity(new Intent(SplashScreen.this, ReferrerActivity.class));
410
            } else if (userData.getString("message", "false").equalsIgnoreCase("true")) {
411
                startActivity(new Intent(SplashScreen.this, MobileNumber.class));
412
            } else if (idCheck != null) {
16080 manas 413
                Intent startActivityIntent=new Intent(SplashScreen.this, MainActivity.class);
414
                Intent intent = getIntent();
415
                if (Intent.ACTION_VIEW.equals(intent.getAction())) {
416
                    Uri uri = intent.getData();
417
                    startActivityIntent.setAction("31");
418
                    startActivityIntent.setData(Uri.parse(uri.toString()));
419
                }
420
                startActivity(startActivityIntent);
15588 manas 421
            } else {
422
                startActivity(new Intent(SplashScreen.this, LoginActivity.class));
423
            }
424
        }
425
    }
14792 manas 426
}
15588 manas 427