Fix update notifications on Android O

This commit is contained in:
topjohnwu 2017-07-14 02:27:02 +08:00
parent 080c37a7f6
commit d2bcac813e
4 changed files with 18 additions and 1 deletions

View File

@ -9,6 +9,7 @@
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<application <application
android:name=".MagiskManager" android:name=".MagiskManager"

View File

@ -1,8 +1,12 @@
package com.topjohnwu.magisk; package com.topjohnwu.magisk;
import android.app.Application; import android.app.Application;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
import android.os.Build;
import android.os.Handler; import android.os.Handler;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.text.TextUtils; import android.text.TextUtils;
@ -31,6 +35,7 @@ public class MagiskManager extends Application {
public static final String BUSYBOX_VERSION = "1.26.2"; public static final String BUSYBOX_VERSION = "1.26.2";
public static final String MAGISKHIDE_PROP = "persist.magisk.hide"; public static final String MAGISKHIDE_PROP = "persist.magisk.hide";
public static final String DISABLE_INDICATION_PROP = "ro.magisk.disable"; public static final String DISABLE_INDICATION_PROP = "ro.magisk.disable";
public static final String NOTIFICATION_CHANNEL = "magisk_update_notice";
// Events // Events
public final CallbackEvent<Void> blockDetectionDone = new CallbackEvent<>(); public final CallbackEvent<Void> blockDetectionDone = new CallbackEvent<>();
@ -143,6 +148,14 @@ public class MagiskManager extends Application {
.apply(); .apply();
// Add busybox to PATH // Add busybox to PATH
Shell.su("PATH=$PATH:" + busybox.getParent()); Shell.su("PATH=$PATH:" + busybox.getParent());
// Create notification channel on Android O
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(NOTIFICATION_CHANNEL,
getString(R.string.magisk_updates), NotificationManager.IMPORTANCE_DEFAULT);
((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).createNotificationChannel(channel);
}
} }
public void initSUConfig() { public void initSUConfig() {

View File

@ -105,7 +105,7 @@ public class Utils {
receiver.setDownloadID(downloadManager.enqueue(request)); receiver.setDownloadID(downloadManager.enqueue(request));
} }
receiver.setFilename(filename); receiver.setFilename(filename);
context.registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); context.getApplicationContext().registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
} }
public static String getLegalFilename(CharSequence filename) { public static String getLegalFilename(CharSequence filename) {
@ -214,6 +214,7 @@ public class Utils {
builder.setSmallIcon(R.drawable.ic_magisk) builder.setSmallIcon(R.drawable.ic_magisk)
.setContentTitle(magiskManager.getString(R.string.magisk_update_title)) .setContentTitle(magiskManager.getString(R.string.magisk_update_title))
.setContentText(magiskManager.getString(R.string.magisk_update_available, magiskManager.remoteMagiskVersionString)) .setContentText(magiskManager.getString(R.string.magisk_update_available, magiskManager.remoteMagiskVersionString))
.setChannelId(MagiskManager.NOTIFICATION_CHANNEL)
.setVibrate(new long[]{0, 100, 100, 100}) .setVibrate(new long[]{0, 100, 100, 100})
.setAutoCancel(true); .setAutoCancel(true);
Intent intent = new Intent(magiskManager, SplashActivity.class); Intent intent = new Intent(magiskManager, SplashActivity.class);
@ -234,6 +235,7 @@ public class Utils {
builder.setSmallIcon(R.drawable.ic_magisk) builder.setSmallIcon(R.drawable.ic_magisk)
.setContentTitle(magiskManager.getString(R.string.manager_update_title)) .setContentTitle(magiskManager.getString(R.string.manager_update_title))
.setContentText(magiskManager.getString(R.string.manager_download_install)) .setContentText(magiskManager.getString(R.string.manager_download_install))
.setChannelId(MagiskManager.NOTIFICATION_CHANNEL)
.setVibrate(new long[]{0, 100, 100, 100}) .setVibrate(new long[]{0, 100, 100, 100})
.setAutoCancel(true); .setAutoCancel(true);
Intent intent = new Intent(magiskManager, ManagerUpdate.class); Intent intent = new Intent(magiskManager, ManagerUpdate.class);

View File

@ -132,6 +132,7 @@
<string name="manual_boot_image">Please manually select a boot image!</string> <string name="manual_boot_image">Please manually select a boot image!</string>
<string name="manager_update_title">New Magisk Manager Update Available!</string> <string name="manager_update_title">New Magisk Manager Update Available!</string>
<string name="manager_download_install">Press to download and install</string> <string name="manager_download_install">Press to download and install</string>
<string name="magisk_updates">Magisk Updates</string>
<!--Settings Activity --> <!--Settings Activity -->
<string name="settings_general_category">General</string> <string name="settings_general_category">General</string>