Skip to content
This repository was archived by the owner on Feb 21, 2025. It is now read-only.

Commit ad4f75e

Browse files
committed
Merge branch 'release/v1.1'
2 parents a4f9802 + f79c18c commit ad4f75e

File tree

12 files changed

+143
-39
lines changed

12 files changed

+143
-39
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ This addon periodically (1 day, only checks when using GrowTracker) checks for u
66

77
Downloaded updates are saved in `/sdcard/Download/`
88

9-
[Latest APK: (MD5) cca4af53d1b2624ca9e19b36838fb3c0 v1.0.2](https://github.com/7LPdWcaW/GrowUpdater-Android/releases/download/v1.0.2/v1.0.2.apk)
9+
[Latest APK: (MD5) bb9c10e1e7758a2fff72581df4a7df75 v1.1](https://github.com/7LPdWcaW/GrowUpdater-Android/releases/download/v1.1/app-release.apk)
1010

1111
# Installation
1212

app/build.gradle

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
apply plugin: 'com.android.application'
22

33
android {
4-
compileSdkVersion 28
5-
buildToolsVersion "28.0.3"
4+
compileSdkVersion 29
5+
buildToolsVersion "29.0.2"
66

77
defaultConfig {
88
applicationId "me.anon.grow.updater"
99

1010
minSdkVersion 17
11-
targetSdkVersion 28
11+
targetSdkVersion 29
1212

13-
versionCode 3
14-
versionName "v1.0.2"
13+
versionCode 4
14+
versionName "v1.1"
1515

1616
manifestPlaceholders = [versionName: versionName]
1717
}
@@ -25,8 +25,8 @@ android {
2525
dependencies {
2626
implementation fileTree(dir: 'libs', include: ['*.jar'])
2727

28-
implementation 'com.android.support:appcompat-v7:28.0.0'
29-
implementation 'com.android.support:support-compat:28.0.0'
28+
implementation 'androidx.appcompat:appcompat:1.0.2'
29+
implementation 'androidx.core:core:1.0.2'
3030
implementation 'com.google.code.gson:gson:2.8.5'
3131
implementation 'com.loopj.android:android-async-http:1.4.9'
3232
testImplementation 'junit:junit:4.12'

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
<uses-permission android:name="android.permission.INTERNET" />
66
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
77
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
8+
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
89

910
<application
1011
android:allowBackup="true"
@@ -13,7 +14,7 @@
1314
android:label="Grow Updater"
1415
>
1516
<provider
16-
android:name="android.support.v4.content.FileProvider"
17+
android:name="androidx.core.content.FileProvider"
1718
android:authorities="${applicationId}.provider"
1819
android:exported="false"
1920
android:grantUriPermissions="true"

app/src/main/java/me/anon/grow/helper/PermissionHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import android.content.DialogInterface;
99
import android.content.pm.PackageManager;
1010
import android.os.Build;
11-
import android.support.v4.content.PermissionChecker;
11+
import androidx.core.content.PermissionChecker;
1212

1313
public class PermissionHelper
1414
{

app/src/main/java/me/anon/grow/updater/CheckUpdateReceiver.java

Lines changed: 89 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,12 @@
1212
import android.content.pm.PackageManager;
1313
import android.os.Build;
1414
import android.preference.PreferenceManager;
15-
import android.support.v4.app.NotificationCompat;
15+
import android.text.TextUtils;
1616
import android.widget.Toast;
1717

1818
import com.google.gson.JsonArray;
1919
import com.google.gson.JsonElement;
20+
import com.google.gson.JsonNull;
2021
import com.google.gson.JsonObject;
2122
import com.google.gson.JsonParser;
2223
import com.loopj.android.http.AsyncHttpClient;
@@ -29,10 +30,10 @@
2930
import java.util.Collections;
3031
import java.util.Comparator;
3132
import java.util.Date;
32-
import java.util.concurrent.TimeUnit;
3333
import java.util.regex.Matcher;
3434
import java.util.regex.Pattern;
3535

36+
import androidx.core.app.NotificationCompat;
3637
import cz.msebera.android.httpclient.Header;
3738

3839
import static android.preference.PreferenceManager.getDefaultSharedPreferences;
@@ -67,6 +68,29 @@ public static class Version implements Serializable
6768

6869
public static Version parse(String version)
6970
{
71+
if (version.equalsIgnoreCase("alpha"))
72+
{
73+
Version v = new Version();
74+
v.major = -1;
75+
v.minor = -1;
76+
v.hot = -1;
77+
78+
v.type = "alpha";
79+
v.iteration = 1;
80+
return v;
81+
}
82+
else if (version.equalsIgnoreCase("beta"))
83+
{
84+
Version v = new Version();
85+
v.major = -1;
86+
v.minor = -1;
87+
v.hot = -1;
88+
89+
v.type = "beta";
90+
v.iteration = 1;
91+
return v;
92+
}
93+
7094
Pattern regex = Pattern.compile("v?([0-9]{1,2})(.?)([0-9]{1,2})((.?)([0-9]{1,2}))?(-([a-zA-Z]+)([0-9]+))?");
7195
Matcher matcher = regex.matcher(version);
7296

@@ -112,6 +136,8 @@ public boolean newerThan(Version otherVersion)
112136
return false;
113137
}
114138

139+
if (this.major == -1 && this.minor == -1 && this.hot == -1) return this.releaseDate > otherVersion.releaseDate;
140+
115141
if (this.major > otherVersion.major)
116142
{
117143
return true;
@@ -164,6 +190,11 @@ private boolean checkPreReleaseNewer(Version otherVersion)
164190

165191
@Override public String toString()
166192
{
193+
if (major == -1 && minor == -1 && hot == -1)
194+
{
195+
return type + " Nightly build";
196+
}
197+
167198
String additional = "";
168199

169200
if (hot > 0)
@@ -198,9 +229,19 @@ private boolean checkPreReleaseNewer(Version otherVersion)
198229
@Override public void onReceive(final Context context, Intent intent)
199230
{
200231
long lastChecked = getDefaultSharedPreferences(context).getLong("last_checked", 0);
201-
long oneDay = TimeUnit.DAYS.toMillis(1);
232+
String frequency = getDefaultSharedPreferences(context).getString("check_frequency", "3600000");
233+
long freqInt = 0;
234+
try
235+
{
236+
freqInt = Long.parseLong(frequency);
237+
}
238+
catch (NumberFormatException e)
239+
{
240+
e.printStackTrace();
241+
}
242+
202243
final boolean force = intent.getExtras() != null && intent.getExtras().containsKey("force");
203-
if (System.currentTimeMillis() - lastChecked > oneDay || force)
244+
if (System.currentTimeMillis() - lastChecked > freqInt || force)
204245
{
205246
getDefaultSharedPreferences(context).edit()
206247
.putLong("last_checked", System.currentTimeMillis())
@@ -219,7 +260,6 @@ private boolean checkPreReleaseNewer(Version otherVersion)
219260
packageInfo = packageManager.getPackageInfo("me.anon.grow", 0);
220261
}
221262
catch (Exception e){}
222-
223263
final int versionCode = packageInfo == null ? 0 : packageInfo.versionCode;
224264
final String versionName = packageInfo == null ? "0.0" : packageInfo.versionName;
225265
final Version currentVersion = Version.parse(versionName);
@@ -236,6 +276,7 @@ private boolean checkPreReleaseNewer(Version otherVersion)
236276
if (ai.metaData != null)
237277
{
238278
currentVersion.appType = ai.metaData.getString("me.anon.grow.APP_TYPE", "original");
279+
currentVersion.releaseDate = Long.parseLong(ai.metaData.getString("me.anon.grow.VERSION_DATE", "0"));
239280
}
240281
}
241282
catch (PackageManager.NameNotFoundException e)
@@ -261,7 +302,18 @@ private boolean checkPreReleaseNewer(Version otherVersion)
261302
for (JsonElement element : jsonArray)
262303
{
263304
JsonObject jsonObject = element.getAsJsonObject();
264-
Version releaseVersion = Version.parse(jsonObject.get("name").getAsString());
305+
String name = "";
306+
307+
if (jsonObject.get("name") != JsonNull.INSTANCE && !TextUtils.isEmpty(jsonObject.get("name").getAsString()))
308+
{
309+
name = jsonObject.get("name").getAsString();
310+
}
311+
else
312+
{
313+
name = jsonObject.get("tag_name").getAsString();
314+
}
315+
316+
Version releaseVersion = Version.parse(name);
265317

266318
if (releaseVersion != null)
267319
{
@@ -275,7 +327,11 @@ private boolean checkPreReleaseNewer(Version otherVersion)
275327
e.printStackTrace();
276328
}
277329

278-
releaseVersion.releaseNotes = jsonObject.get("body").getAsString();
330+
releaseVersion.releaseNotes = "";
331+
if (jsonObject.get("body") != JsonNull.INSTANCE)
332+
{
333+
releaseVersion.releaseNotes = jsonObject.get("body").getAsString();
334+
}
279335

280336
for (JsonElement assets : jsonObject.get("assets").getAsJsonArray())
281337
{
@@ -303,27 +359,42 @@ private boolean checkPreReleaseNewer(Version otherVersion)
303359
}
304360
});
305361

306-
Version latest = releases.get(0);
307-
Version latestStable = releases.get(0);
362+
Version latest = null;
363+
Version latestBeta = null;
364+
Version latestStable = null;
308365

309366
for (Version release : releases)
310367
{
311-
if (release.type.equals(""))
368+
if (release.type.equals("") && latestStable == null)
312369
{
313370
latestStable = release;
314-
break;
371+
}
372+
else if (release.type.equals("alpha") && latest == null)
373+
{
374+
latest = release;
375+
}
376+
else if (release.type.equals("beta") && latestBeta == null)
377+
{
378+
latestBeta = release;
315379
}
316380
}
317381

318382
boolean experimental = PreferenceManager.getDefaultSharedPreferences(context).getBoolean("experimental", false);
319-
if ((!latest.type.equals("") && experimental && latest.newerThan(currentVersion))
320-
|| latestStable.newerThan(currentVersion))
383+
boolean beta = PreferenceManager.getDefaultSharedPreferences(context).getBoolean("beta", false);
384+
385+
if (context == null) return;
386+
387+
if (experimental && latest.newerThan(currentVersion))
321388
{
322-
// send notification
323-
if (context != null)
324-
{
325-
sendUpdateNotification(context, experimental ? latest : latestStable);
326-
}
389+
sendUpdateNotification(context, latest);
390+
}
391+
else if (beta && latest.newerThan(currentVersion))
392+
{
393+
sendUpdateNotification(context, latestBeta);
394+
}
395+
else if (latest != null && latest.newerThan(currentVersion))
396+
{
397+
sendUpdateNotification(context, latest);
327398
}
328399
else
329400
{

app/src/main/java/me/anon/grow/updater/ConfigureActivity.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import android.os.Bundle;
66
import android.preference.Preference;
77
import android.preference.PreferenceFragment;
8-
import android.support.annotation.Nullable;
9-
import android.support.v7.app.AppCompatActivity;
8+
import androidx.annotation.Nullable;
9+
import androidx.appcompat.app.AppCompatActivity;
1010
import android.text.Html;
1111

1212
import java.io.BufferedInputStream;

app/src/main/java/me/anon/grow/updater/DownloadActivity.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010
import android.net.Uri;
1111
import android.os.Bundle;
1212
import android.os.Environment;
13-
import android.support.annotation.NonNull;
14-
import android.support.annotation.Nullable;
15-
import android.support.v4.content.FileProvider;
16-
import android.support.v7.app.AppCompatActivity;
13+
import androidx.annotation.NonNull;
14+
import androidx.annotation.Nullable;
15+
import androidx.core.content.FileProvider;
16+
import androidx.appcompat.app.AppCompatActivity;
1717
import android.view.View;
1818
import android.widget.ProgressBar;
1919
import android.widget.TextView;

app/src/main/res/values/arrays.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
3+
<resources>
4+
<string-array name="frequency_entries">
5+
<item>Hourly</item>
6+
<item>Daily</item>
7+
<item>Weekly</item>
8+
</string-array>
9+
10+
<string-array name="frequency_values">
11+
<item>3600000</item>
12+
<item>86400000</item>
13+
<item>604800000</item>
14+
</string-array>
15+
</resources>

app/src/main/res/xml/preferences.xml

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,25 @@
1212
android:summary="Tap to check now"
1313
/>
1414

15+
<ListPreference
16+
android:key="check_frequency"
17+
android:title="Maximum check frequency"
18+
android:summary="How often to allow to check - Only triggers when inside GrowTracker. Currently %s"
19+
android:entries="@array/frequency_entries"
20+
android:entryValues="@array/frequency_values"
21+
android:defaultValue="3600000"
22+
/>
23+
24+
<CheckBoxPreference
25+
android:key="beta"
26+
android:title="Opt-in for beta builds"
27+
android:summary="Allow for beta builds to be downloaded"
28+
/>
29+
1530
<CheckBoxPreference
1631
android:key="experimental"
17-
android:title="Opt-in for experimental builds"
18-
android:summary="Allow for alpha and beta builds to be downloaded"
32+
android:title="Opt-in for experimental develop builds"
33+
android:summary="Allow for alpha builds to be downloaded - WARNING: EXPERIMENTAL!"
1934
/>
2035
</PreferenceCategory>
2136

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ buildscript {
77
jcenter()
88
}
99
dependencies {
10-
classpath 'com.android.tools.build:gradle:3.2.1'
10+
classpath 'com.android.tools.build:gradle:3.4.2'
1111

1212
// NOTE: Do not place your application dependencies here; they belong
1313
// in the individual module build.gradle files

0 commit comments

Comments
 (0)