74 lines
3.2 KiB
Java
Raw Normal View History

2017-02-12 19:49:46 +08:00
package com.topjohnwu.magisk.asyncs;
2017-02-17 08:51:51 +08:00
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.TaskStackBuilder;
import android.support.v7.app.NotificationCompat;
2017-02-12 19:49:46 +08:00
import com.topjohnwu.magisk.MagiskManager;
2017-02-17 08:51:51 +08:00
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.SplashActivity;
import com.topjohnwu.magisk.utils.Utils;
2017-02-12 19:49:46 +08:00
import com.topjohnwu.magisk.utils.WebService;
import org.json.JSONException;
import org.json.JSONObject;
public class CheckUpdates extends ParallelTask<Void, Void, Void> {
2017-05-12 02:25:07 +08:00
private static final String UPDATE_JSON = "https://raw.githubusercontent.com/topjohnwu/MagiskManager/update/magisk_update.json";
2017-02-17 08:51:51 +08:00
private static final int NOTIFICATION_ID = 1;
2017-02-12 19:49:46 +08:00
2017-02-17 08:51:51 +08:00
private boolean showNotification = false;
public CheckUpdates(Context context, boolean b) {
this(context);
showNotification = b;
2017-02-17 08:51:51 +08:00
}
public CheckUpdates(Context context) {
magiskManager = Utils.getMagiskManager(context);
2017-02-12 19:49:46 +08:00
}
@Override
protected Void doInBackground(Void... voids) {
String jsonStr = WebService.request(UPDATE_JSON, WebService.GET);
try {
JSONObject json = new JSONObject(jsonStr);
JSONObject magisk = json.getJSONObject("magisk");
2017-05-12 02:25:07 +08:00
magiskManager.remoteMagiskVersionString = magisk.getString("version");
magiskManager.remoteMagiskVersionCode = magisk.getInt("versionCode");
2017-02-12 19:49:46 +08:00
magiskManager.magiskLink = magisk.getString("link");
magiskManager.releaseNoteLink = magisk.getString("note");
2017-05-12 02:25:07 +08:00
} catch (JSONException ignored) {}
2017-02-12 19:49:46 +08:00
return null;
}
@Override
protected void onPostExecute(Void v) {
2017-05-12 02:25:07 +08:00
if (magiskManager.magiskVersionCode < magiskManager.remoteMagiskVersionCode
2017-02-22 04:58:03 +08:00
&& showNotification && magiskManager.updateNotification) {
2017-02-17 08:51:51 +08:00
NotificationCompat.Builder builder = new NotificationCompat.Builder(magiskManager);
builder.setSmallIcon(R.drawable.ic_magisk)
.setContentTitle(magiskManager.getString(R.string.magisk_update_title))
2017-05-12 02:25:07 +08:00
.setContentText(magiskManager.getString(R.string.magisk_update_available, magiskManager.remoteMagiskVersionString))
2017-02-17 08:51:51 +08:00
.setVibrate(new long[]{0, 100, 100, 100})
.setAutoCancel(true);
Intent intent = new Intent(magiskManager, SplashActivity.class);
intent.putExtra(MagiskManager.INTENT_SECTION, "install");
2017-02-17 08:51:51 +08:00
TaskStackBuilder stackBuilder = TaskStackBuilder.create(magiskManager);
2017-02-17 14:07:15 +08:00
stackBuilder.addParentStack(SplashActivity.class);
2017-02-17 08:51:51 +08:00
stackBuilder.addNextIntent(intent);
PendingIntent pendingIntent = stackBuilder.getPendingIntent(NOTIFICATION_ID, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) magiskManager.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(NOTIFICATION_ID, builder.build());
}
2017-02-12 19:49:46 +08:00
magiskManager.updateCheckDone.trigger();
super.onPostExecute(v);
2017-02-12 19:49:46 +08:00
}
}