added update dialog

This commit is contained in:
Bryson Steck 2021-06-28 22:31:33 -06:00
parent 0c0d4b9bb1
commit 71975e98f4
3 changed files with 68 additions and 18 deletions

View file

@ -1,20 +1,25 @@
package me.brysonsteck.wiimmfiwatcher;
import android.os.Build;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.room.Room;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import me.brysonsteck.wiimmfiwatcher.database.AppDatabase;
import me.brysonsteck.wiimmfiwatcher.fragments.AboutFragment;
import me.brysonsteck.wiimmfiwatcher.fragments.WatchCodeFragment;
public class MainActivity extends AppCompatActivity {
AppDatabase database;
final MaterialAlertDialogBuilder[] dialog = new MaterialAlertDialogBuilder[1];
boolean shownUpdate = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -52,7 +57,10 @@ public class MainActivity extends AppCompatActivity {
@Override
protected void onStart() {
super.onStart();
new Thread(() -> {
final String[] newestRelease = {""};
final boolean[] outdated = {false};
Thread thread = new Thread() {
public void run() {
Updater updater = new Updater();
updater.compareRelease(BuildConfig.VERSION_NAME);
if (updater.isOutdated()) {
@ -65,7 +73,40 @@ public class MainActivity extends AppCompatActivity {
System.out.println("\t\t" + updater.getNewestRelease() + " is the latest release of Wiimmfi Watcher.");
System.out.println("\t\t---------------------------------------------------------------");
}
}).start();
newestRelease[0] = updater.getNewestRelease();
outdated[0] = updater.isOutdated();
}
};
thread.start();
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
if (outdated[0] && !shownUpdate) {
shownUpdate = true;
final String appPackageName = getPackageName(); // getPackageName() from Context or Activity object
new MaterialAlertDialogBuilder(this)
.setTitle(R.string.update_title)
.setMessage(getResources().getString(R.string.update_message, newestRelease[0]))
.setNegativeButton(getResources().getString(R.string.update_negative), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setPositiveButton(getResources().getString(R.string.update_positive), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
try {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
} catch (android.content.ActivityNotFoundException anfe) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
}
}
})
.show();
}
}
@Override

View file

@ -22,8 +22,12 @@ public class Updater {
String json = urlReader();
JsonElement root = new JsonParser().parse(json);
JsonObject rootObj = root.getAsJsonObject();
newestRelease = rootObj.get("current-release").getAsString();
githubRelease = rootObj.get("github-release").getAsString();
JsonElement softwareElement = rootObj.getAsJsonObject("wiimmfi-watcher");
JsonObject softwareObj = softwareElement.getAsJsonObject();
newestRelease = softwareObj.get("current-release").getAsString();
newestRelease = newestRelease.replace("\"", "");
githubRelease = softwareObj.get("github-release").getAsString();
githubRelease = githubRelease.replace("\"", "");
} catch (IOException e) {
System.out.println("An error has occurred while attempting to check for updates.");
e.printStackTrace();
@ -31,7 +35,7 @@ public class Updater {
}
public String urlReader() throws IOException {
URL website = new URL("https://brysonsteck.net/watcher.json");
URL website = new URL("https://brysonsteck.net/updates.json");
URLConnection connection = website.openConnection();
BufferedReader in = new BufferedReader(
new InputStreamReader(

View file

@ -37,4 +37,9 @@
<string name="header_null_error">This player is not online, not inside a room or does not exist. Click the refresh button to try again, or click on the back button to enter a different friend code.</string>
<string name="jsoup_error">Whoops! Wiimmfi Watcher was unable to connect to the Wiimmfi servers. This could be that you are not connected to the internet, but it could be something else. Here was the error:\n\n%1$s\n\nIf the error is along the lines of \"Unable to resolve host\" or \"Timeout\", you are probably having internet issues. Make sure you are connected to the internet then click the refresh button or press back to watch a new friend code.\n\nIf the error is something other than that or if the error persists, make sure that Wiimmfi\'s website is currently running. Otherwise, please screenshot this screen and submit a bug report by clicking the About icon on the main page.</string>
<string name="locating_text">Locating %1$s…</string>
<string name="update_title">A new update is available!</string>
<string name="update_message">A new version of Wiimmfi Watcher is available on the Play Store (version %1$s)! You can download it by pressing \"Update\".</string>
<string name="update_positive">Update</string>
<string name="update_negative">Later</string>
</resources>