/
SplashActivity.java
158 lines (142 loc) 路 6.26 KB
/
SplashActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
package openfoodfacts.github.scrachx.openfood.views;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import net.steamcrafted.loadtoast.LoadToast;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import openfoodfacts.github.scrachx.openfood.R;
import openfoodfacts.github.scrachx.openfood.models.Additive;
import openfoodfacts.github.scrachx.openfood.models.FoodAPIRestClientUsage;
public class SplashActivity extends BaseActivity {
private SharedPreferences settings;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
settings = getSharedPreferences("prefs", 0);
SharedPreferences.Editor editor = settings.edit();
boolean firstRun = settings.getBoolean("firstRun", true);
boolean errorAdditives = settings.getBoolean("errorAdditives", true);
boolean errorAllergens = settings.getBoolean("errorAllergens", true);
if(!errorAdditives && ! errorAllergens) {
editor.putBoolean("firstRun", false);
editor.apply();
firstRun = false;
}
if (!firstRun ) {
Intent mainIntent = new Intent(SplashActivity.this, MainActivity.class);
SplashActivity.this.startActivity(mainIntent);
SplashActivity.this.finish();
} else {
new GetJson(this).execute();
}
}
private class GetJson extends AsyncTask<Void, Boolean, Boolean> {
private Context context;
private LoadToast lt;
public GetJson(Context ctx) {
context = ctx;
lt = new LoadToast(ctx);
}
@Override
protected void onPreExecute() {
super.onPreExecute();
lt.setText(context.getString(R.string.toast_retrieving));
lt.setBackgroundColor(context.getResources().getColor(R.color.indigo_600));
lt.setTextColor(context.getResources().getColor(R.color.white));
lt.show();
}
@Override
protected Boolean doInBackground(Void... arg0) {
String json = null;
String json1 = null;
try {
boolean errorAdditives = settings.getBoolean("errorAdditives", true);
if(errorAdditives) {
InputStream is = getAssets().open("additives_fr.json");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
ObjectMapper objectMapper = new ObjectMapper();
List<Additive> la = objectMapper.readValue(json, new TypeReference<List<Additive>>() {});
for (Additive a : la) {
Additive ta = new Additive(a.getCode(), a.getName(), a.getRisk());
ta.save();
}
InputStream is1 = getAssets().open("additives_en.json");
int size1 = is1.available();
byte[] buffer1 = new byte[size1];
is1.read(buffer1);
is1.close();
json1 = new String(buffer1, "UTF-8");
ObjectMapper objectMapper1 = new ObjectMapper();
List<Additive> la1 = objectMapper1.readValue(json1, new TypeReference<List<Additive>>() {});
for (Additive a : la1) {
Additive ta = new Additive(a.getCode(), a.getName(), a.getRisk());
ta.save();
}
}
return true;
} catch (IOException ex) {
ex.printStackTrace();
return false;
}
}
@Override
protected void onPostExecute(final Boolean result) {
super.onPostExecute(result);
final SharedPreferences.Editor editor = settings.edit();
boolean errorAllergens = settings.getBoolean("errorAllergens", true);
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
if(isConnected) {
if(errorAllergens) {
FoodAPIRestClientUsage api = new FoodAPIRestClientUsage();
api.getAllergens(new FoodAPIRestClientUsage.OnAllergensCallback() {
@Override
public void onAllergensResponse(boolean value) {
if (result && value) {
lt.success();
editor.putBoolean("firstRun", false);
editor.apply();
}
if(!value){
lt.error();
editor.putBoolean("errorAllergens", true);
editor.apply();
} else {
editor.putBoolean("errorAllergens", false);
editor.apply();
}
Intent mainIntent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(mainIntent);
finish();
}
});
}
} else {
if(!result){
lt.error();
editor.putBoolean("errorAdditives", true);
editor.apply();
} else {
editor.putBoolean("errorAdditives", false);
editor.apply();
}
Intent mainIntent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(mainIntent);
finish();
}
}
}
}