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
|
|
|
|
2017-02-20 20:09:20 +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-02-17 08:51:51 +08:00
|
|
|
private static final String UPDATE_JSON = "https://raw.githubusercontent.com/topjohnwu/MagiskManager/updates/magisk_update.json";
|
|
|
|
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);
|
2017-02-17 09:26:17 +08:00
|
|
|
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");
|
|
|
|
magiskManager.remoteMagiskVersion = magisk.getDouble("versionCode");
|
|
|
|
magiskManager.magiskLink = magisk.getString("link");
|
|
|
|
magiskManager.releaseNoteLink = magisk.getString("note");
|
|
|
|
} catch (JSONException ignored) {
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected void onPostExecute(Void v) {
|
2017-02-17 08:51:51 +08:00
|
|
|
if (magiskManager.magiskVersion < magiskManager.remoteMagiskVersion && showNotification) {
|
|
|
|
NotificationCompat.Builder builder = new NotificationCompat.Builder(magiskManager);
|
|
|
|
builder.setSmallIcon(R.drawable.ic_magisk)
|
|
|
|
.setContentTitle(magiskManager.getString(R.string.magisk_update_title))
|
|
|
|
.setContentText(magiskManager.getString(R.string.magisk_update_available, magiskManager.remoteMagiskVersion))
|
|
|
|
.setVibrate(new long[]{0, 100, 100, 100})
|
|
|
|
.setAutoCancel(true);
|
|
|
|
Intent intent = new Intent(magiskManager, SplashActivity.class);
|
2017-02-20 20:09:20 +08:00
|
|
|
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();
|
|
|
|
}
|
|
|
|
}
|