Skip to content
This repository was archived by the owner on Mar 26, 2019. It is now read-only.

Commit 414a8be

Browse files
committed
Update version to 2.2.7, Fix proguard, Check version by firebase, Fix fabric issue #65 #66 #67 #70 #75 #76 #77.
1 parent bdf5ab4 commit 414a8be

File tree

13 files changed

+137
-63
lines changed

13 files changed

+137
-63
lines changed

KUAS-AP-Material/app/build.gradle

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ android {
2323
applicationId "com.kuas.ap"
2424
minSdkVersion 15
2525
targetSdkVersion 24
26-
versionCode 20206
27-
versionName "2.2.6"
26+
versionCode 20207
27+
versionName "2.2.7"
2828
}
2929

3030
packagingOptions {
@@ -69,6 +69,7 @@ dependencies {
6969
compile 'com.android.support:cardview-v7:24.1.1'
7070
compile 'com.android.support:recyclerview-v7:24.1.1'
7171
compile 'com.google.android.gms:play-services-analytics:9.4.0'
72+
compile 'com.google.firebase:firebase-config:9.4.0'
7273
compile 'com.loopj.android:android-async-http:1.4.9'
7374
compile 'com.google.code.gson:gson:2.7'
7475
compile 'com.wdullaer:materialdatetimepicker:2.5.0'

KUAS-AP-Material/app/proguard-gson.pro

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,4 @@
77

88
# Gson specific classes
99
-keep class sun.misc.Unsafe { *; }
10-
#-keep class com.google.gson.stream.** { *; }
11-
12-
# Application classes that will be serialized/deserialized over Gson
13-
-keep class com.kuas.ap.models.BusModel { *; }
14-
-keep class com.kuas.ap.models.CourseModel { *; }
10+
#-keep class com.google.gson.stream.** { *; }

KUAS-AP-Material/app/proguard-rules.pro

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@
1616
public *;
1717
}
1818

19+
# Application classes that will be serialized/deserialized over Gson
20+
-keep class silent.kuasapmaterial.models.BusModel { *; }
21+
-keep class silent.kuasapmaterial.models.CourseModel { *; }
22+
1923
# Rename packages
2024
-optimizationpasses 30
2125
-mergeinterfacesaggressively

KUAS-AP-Material/app/src/main/java/silent/kuasapmaterial/BusActivity.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import android.support.v4.content.ContextCompat;
1010
import android.support.v4.widget.SwipeRefreshLayout;
1111
import android.support.v7.app.AlertDialog;
12+
import android.util.Log;
1213
import android.view.LayoutInflater;
1314
import android.view.View;
1415
import android.view.ViewGroup;
@@ -417,13 +418,14 @@ public void onClick(DialogInterface dialog, int which) {
417418
public void onClick(DialogInterface dialog, int which) {
418419
mTracker.send(new HitBuilders.EventBuilder().setCategory("book bus")
419420
.setAction("click").build());
420-
bookBus(modelList, position);
421+
bookBus(modelList.get(position).busId);
421422
}
422423
}).setNegativeButton(R.string.cancel, null).show();
423424
}
424425
}
425426

426427
private void cancelBookBus(final List<BusModel> modelList, final int position) {
428+
Log.d(Constant.TAG, modelList.get(position).cancelKey);
427429
Helper.cancelBookingBus(BusActivity.this, modelList.get(position).cancelKey,
428430
new GeneralCallback() {
429431

@@ -462,8 +464,8 @@ public void onTokenExpired() {
462464
});
463465
}
464466

465-
private void bookBus(final List<BusModel> modelList, final int position) {
466-
Helper.bookingBus(BusActivity.this, modelList.get(position).busId, new BusBookCallback() {
467+
private void bookBus(final String busId) {
468+
Helper.bookingBus(BusActivity.this, busId, new BusBookCallback() {
467469

468470
@Override
469471
public void onSuccess() {
@@ -514,7 +516,7 @@ public void onFail(String errorMessage) {
514516
super.onFail(errorMessage);
515517
mTracker.send(
516518
new HitBuilders.EventBuilder().setCategory("book bus").setAction("status")
517-
.setLabel("fail " + modelList.get(position).busId).build());
519+
.setLabel("fail " + busId).build());
518520
Toast.makeText(BusActivity.this, HtmlCompat.fromHtml(errorMessage),
519521
Toast.LENGTH_LONG).show();
520522
}

KUAS-AP-Material/app/src/main/java/silent/kuasapmaterial/LoginActivity.java

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import android.content.pm.PackageInfo;
66
import android.content.pm.PackageManager;
77
import android.os.Bundle;
8+
import android.support.annotation.NonNull;
89
import android.support.design.widget.TextInputLayout;
910
import android.support.v7.app.AlertDialog;
1011
import android.text.TextUtils;
@@ -21,6 +22,11 @@
2122

2223
import com.crashlytics.android.Crashlytics;
2324
import com.google.android.gms.analytics.HitBuilders;
25+
import com.google.android.gms.tasks.OnCompleteListener;
26+
import com.google.android.gms.tasks.Task;
27+
import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
28+
import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings;
29+
import com.kuas.ap.BuildConfig;
2430
import com.kuas.ap.R;
2531

2632
import java.io.UnsupportedEncodingException;
@@ -48,6 +54,8 @@ public class LoginActivity extends SilentActivity
4854

4955
AlertDialog mProgressDialog;
5056

57+
private FirebaseRemoteConfig mFirebaseRemoteConfig;
58+
5159
@Override
5260
protected void onCreate(Bundle savedInstanceState) {
5361
super.onCreate(savedInstanceState);
@@ -86,34 +94,36 @@ private void getVersion() {
8694
}
8795
checkUpdateNote(getString(R.string.version, version));
8896

89-
Helper.getAppVersion(this, new GeneralCallback() {
97+
mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
98+
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
99+
.setDeveloperModeEnabled(BuildConfig.DEBUG).build();
100+
mFirebaseRemoteConfig.setConfigSettings(configSettings);
90101

91-
@Override
92-
public void onSuccess(String data) {
93-
super.onSuccess(data);
102+
mFirebaseRemoteConfig.fetch(60).addOnCompleteListener(new OnCompleteListener<Void>() {
94103

95-
if (isFinishing()) {
96-
return;
97-
}
98-
99-
String[] serverVersions = data.split("\\.");
100-
String[] currentVersions = version.split("\\.");
101-
102-
if (Integer.valueOf(serverVersions[0]) > Integer.valueOf(currentVersions[0])) {
103-
Utils.createForceUpdateDialog(LoginActivity.this).show();
104-
} else if (serverVersions[0].equals(currentVersions[0])) {
105-
if (Integer.valueOf(serverVersions[1]) > Integer.valueOf(currentVersions[1])) {
106-
Utils.createForceUpdateDialog(LoginActivity.this).show();
107-
} else if (serverVersions[1].equals(currentVersions[1])) {
108-
if (Integer.valueOf(serverVersions[2]) >
109-
Integer.valueOf(currentVersions[2])) {
110-
if (Integer.valueOf(serverVersions[2]) -
111-
Integer.valueOf(currentVersions[2]) >= 5) {
104+
@Override
105+
public void onComplete(@NonNull Task<Void> task) {
106+
if (task.isSuccessful() && !isFinishing()) {
107+
mFirebaseRemoteConfig.activateFetched();
108+
try {
109+
PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
110+
111+
boolean hasNewVersion = Integer.parseInt(
112+
mFirebaseRemoteConfig.getString("android_app_version")) >
113+
pInfo.versionCode;
114+
115+
if (hasNewVersion) {
116+
int diff = Integer.parseInt(
117+
mFirebaseRemoteConfig.getString("android_app_version")) -
118+
pInfo.versionCode;
119+
if (diff >= 5) {
112120
Utils.createForceUpdateDialog(LoginActivity.this).show();
113121
} else {
114122
Utils.createUpdateDialog(LoginActivity.this).show();
115123
}
116124
}
125+
} catch (Exception e) {
126+
// ignore
117127
}
118128
}
119129
}

KUAS-AP-Material/app/src/main/java/silent/kuasapmaterial/SettingsActivity.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,6 @@ public void onSuccess() {
184184
progressDialog.dismiss();
185185
Toast.makeText(SettingsActivity.this, R.string.bus_notify_hint, Toast.LENGTH_LONG)
186186
.show();
187-
Toast.makeText(SettingsActivity.this, R.string.beta_function, Toast.LENGTH_SHORT)
188-
.show();
189187
}
190188

191189
@Override
@@ -237,8 +235,6 @@ public void onSuccess() {
237235
progressDialog.dismiss();
238236
Toast.makeText(SettingsActivity.this, R.string.course_notify_hint,
239237
Toast.LENGTH_LONG).show();
240-
Toast.makeText(SettingsActivity.this, R.string.beta_function, Toast.LENGTH_SHORT)
241-
.show();
242238
}
243239

244240
@Override

KUAS-AP-Material/app/src/main/java/silent/kuasapmaterial/fragment/ScheduleFragment.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package silent.kuasapmaterial.fragment;
22

33
import android.app.Activity;
4+
import android.content.ActivityNotFoundException;
45
import android.content.Context;
56
import android.content.DialogInterface;
67
import android.content.Intent;
@@ -15,6 +16,7 @@
1516
import android.widget.BaseAdapter;
1617
import android.widget.ListView;
1718
import android.widget.TextView;
19+
import android.widget.Toast;
1820

1921
import com.google.android.gms.analytics.HitBuilders;
2022
import com.kuas.ap.R;
@@ -176,7 +178,12 @@ public void AddCalendarEvent(String Msg) {
176178
calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, true);
177179
calendarIntent.putExtra(CalendarContract.Events.TITLE, _msg);
178180
calendarIntent.putExtra(CalendarContract.Events.EVENT_LOCATION, "國立高雄應用科技大學");
179-
startActivity(calendarIntent);
181+
try {
182+
startActivity(calendarIntent);
183+
} catch (ActivityNotFoundException e) {
184+
Toast.makeText(getContext(), R.string.calender_app_not_found, Toast.LENGTH_SHORT)
185+
.show();
186+
}
180187
}
181188

182189
public ListView getListView() {

KUAS-AP-Material/app/src/main/java/silent/kuasapmaterial/libs/AlarmHelper.java

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import android.content.Intent;
88
import android.os.Bundle;
99

10+
import com.crashlytics.android.answers.Answers;
11+
import com.crashlytics.android.answers.CustomEvent;
1012
import com.kuas.ap.R;
1113

1214
import java.util.ArrayList;
@@ -31,18 +33,32 @@ public static void setBusNotification(Context context, List<BusModel> busModelLi
3133
List<BusModel> savedBusModelList = Utils.loadBusNotify(context);
3234
if (savedBusModelList != null && savedBusModelList.size() != 0) {
3335
for (BusModel model : savedBusModelList) {
34-
if (!busModelList.contains(model)) {
35-
cancelBusAlarm(context, model.endStation, model.runDateTime,
36-
Integer.parseInt(model.cancelKey));
36+
try {
37+
if (!busModelList.contains(model)) {
38+
cancelBusAlarm(context, model.endStation, model.runDateTime,
39+
Integer.parseInt(model.cancelKey));
40+
}
41+
42+
} catch (Exception e) {
43+
Answers.getInstance().logCustom(
44+
new CustomEvent("Gson").putCustomAttribute("Type", "Bus")
45+
.putCustomAttribute("Exception", e.getMessage()));
3746
}
3847
}
3948
}
4049

4150
Utils.saveBusNotify(context, busModelList);
4251
for (BusModel model : busModelList) {
43-
setBusAlarm(context, model.endStation, model.runDateTime,
44-
Integer.parseInt(model.cancelKey));
52+
try {
53+
setBusAlarm(context, model.endStation, model.runDateTime,
54+
Integer.parseInt(model.cancelKey));
55+
} catch (Exception e) {
56+
Answers.getInstance().logCustom(
57+
new CustomEvent("Gson").putCustomAttribute("Type", "Bus")
58+
.putCustomAttribute("Exception", e.getMessage()));
59+
}
4560
}
61+
4662
}
4763

4864
public static void setBusNotification(Context context) {
@@ -111,15 +127,21 @@ public static void setCourseNotification(Context context) {
111127
List<CourseModel> courseModelList = Utils.loadCourseNotify(context);
112128
if (courseModelList != null) {
113129
for (CourseModel courseModel : courseModelList) {
114-
if (!courseModel.start_time.trim().contains(":")) {
115-
List<String> sectionList = new ArrayList<>(Arrays.asList(
116-
context.getResources().getStringArray(R.array.course_sections)));
117-
courseModel.start_time =
118-
context.getResources().getStringArray(R.array.start_time)[sectionList
119-
.indexOf(courseModel.section)];
130+
try {
131+
if (!courseModel.start_time.trim().contains(":")) {
132+
List<String> sectionList = new ArrayList<>(Arrays.asList(
133+
context.getResources().getStringArray(R.array.course_sections)));
134+
courseModel.start_time = context.getResources()
135+
.getStringArray(R.array.start_time)[sectionList
136+
.indexOf(courseModel.section)];
137+
}
138+
setCourseAlarm(context, courseModel.room.trim(), courseModel.title,
139+
courseModel.start_time, courseModel.dayOfWeek, courseModel.notifyKey);
140+
} catch (Exception e) {
141+
Answers.getInstance().logCustom(
142+
new CustomEvent("Gson").putCustomAttribute("Type", "Course")
143+
.putCustomAttribute("Exception", e.getMessage()));
120144
}
121-
setCourseAlarm(context, courseModel.room.trim(), courseModel.title,
122-
courseModel.start_time, courseModel.dayOfWeek, courseModel.notifyKey);
123145
}
124146
}
125147
}

KUAS-AP-Material/app/src/main/java/silent/kuasapmaterial/libs/Helper.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -723,6 +723,20 @@ public void onFailure(int statusCode, Header[] headers, Throwable throwable,
723723
onHelperFail(context, callback, e);
724724
}
725725
}
726+
727+
@Override
728+
public void onFailure(int statusCode, Header[] headers, Throwable throwable,
729+
JSONArray errorResponse) {
730+
super.onFailure(statusCode, headers, throwable, errorResponse);
731+
onHelperFail(context, callback, statusCode, headers, throwable);
732+
}
733+
734+
@Override
735+
public void onFailure(int statusCode, Header[] headers, String responseString,
736+
Throwable throwable) {
737+
super.onFailure(statusCode, headers, responseString, throwable);
738+
onHelperFail(context, callback, statusCode, headers, throwable, responseString);
739+
}
726740
});
727741
}
728742

KUAS-AP-Material/app/src/main/java/silent/kuasapmaterial/models/BusModel.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import android.support.annotation.NonNull;
44

5+
import com.crashlytics.android.answers.Answers;
6+
import com.crashlytics.android.answers.CustomEvent;
7+
58
public class BusModel implements Comparable<BusModel> {
69

710
public boolean isReserve;
@@ -16,11 +19,18 @@ public class BusModel implements Comparable<BusModel> {
1619

1720
@Override
1821
public boolean equals(Object o) {
19-
return o instanceof BusModel &&
20-
EndEnrollDateTime.equals(((BusModel) o).EndEnrollDateTime) &&
21-
endStation.equals(((BusModel) o).endStation) &&
22-
runDateTime.equals(((BusModel) o).runDateTime) &&
23-
cancelKey.equals(((BusModel) o).cancelKey);
22+
try {
23+
return o instanceof BusModel &&
24+
EndEnrollDateTime.equals(((BusModel) o).EndEnrollDateTime) &&
25+
endStation.equals(((BusModel) o).endStation) &&
26+
runDateTime.equals(((BusModel) o).runDateTime) &&
27+
cancelKey.equals(((BusModel) o).cancelKey);
28+
} catch (Exception e) {
29+
Answers.getInstance().logCustom(
30+
new CustomEvent("Gson").putCustomAttribute("Type", "Bus Equals")
31+
.putCustomAttribute("Exception", e.getMessage()));
32+
return false;
33+
}
2434
}
2535

2636
@Override

KUAS-AP-Material/app/src/main/java/silent/kuasapmaterial/models/CourseModel.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import android.support.annotation.NonNull;
44

5+
import com.crashlytics.android.answers.Answers;
6+
import com.crashlytics.android.answers.CustomEvent;
7+
58
import java.util.List;
69

710
public class CourseModel implements Comparable<CourseModel> {
@@ -19,11 +22,18 @@ public class CourseModel implements Comparable<CourseModel> {
1922

2023
@Override
2124
public boolean equals(Object o) {
22-
return o instanceof CourseModel && title.equals(((CourseModel) o).title) &&
23-
room.equals(((CourseModel) o).room) &&
24-
start_time.equals(((CourseModel) o).start_time) &&
25-
weekday.equals(((CourseModel) o).weekday) &&
26-
section.equals(((CourseModel) o).section);
25+
try {
26+
return o instanceof CourseModel && title.equals(((CourseModel) o).title) &&
27+
room.equals(((CourseModel) o).room) &&
28+
start_time.equals(((CourseModel) o).start_time) &&
29+
weekday.equals(((CourseModel) o).weekday) &&
30+
section.equals(((CourseModel) o).section);
31+
} catch (Exception e) {
32+
Answers.getInstance().logCustom(
33+
new CustomEvent("Gson").putCustomAttribute("Type", "Course Equals")
34+
.putCustomAttribute("Exception", e.getMessage()));
35+
return false;
36+
}
2737
}
2838

2939
@Override

0 commit comments

Comments
 (0)