[app] Update notification util (#94)
Open app list instead of module list
This commit is contained in:
parent
5c1997f64d
commit
07b84d6694
|
|
@ -11,7 +11,6 @@ import java.io.PrintWriter;
|
||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
|
|
||||||
import io.github.lsposed.manager.ui.activity.CrashReportActivity;
|
import io.github.lsposed.manager.ui.activity.CrashReportActivity;
|
||||||
import io.github.lsposed.manager.util.NotificationUtil;
|
|
||||||
|
|
||||||
public class App extends Application {
|
public class App extends Application {
|
||||||
public static final String TAG = "LSPosedManager";
|
public static final String TAG = "LSPosedManager";
|
||||||
|
|
@ -61,7 +60,5 @@ public class App extends Application {
|
||||||
instance = this;
|
instance = this;
|
||||||
|
|
||||||
pref = PreferenceManager.getDefaultSharedPreferences(this);
|
pref = PreferenceManager.getDefaultSharedPreferences(this);
|
||||||
|
|
||||||
NotificationUtil.init();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,9 +28,9 @@ public class EdServiceReceiver extends BroadcastReceiver {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (intent.getAction().equals("io.github.lsposed.action.MODULE_NOT_ACTIVATAED")) {
|
if (intent.getAction().equals("io.github.lsposed.action.MODULE_NOT_ACTIVATAED")) {
|
||||||
NotificationUtil.showNotActivatedNotification(packageName, module.getAppName());
|
NotificationUtil.showNotification(context, packageName, module.getAppName(), false);
|
||||||
} else if (intent.getAction().equals("io.github.lsposed.action.MODULE_UPDATED")) {
|
} else if (intent.getAction().equals("io.github.lsposed.action.MODULE_UPDATED")) {
|
||||||
NotificationUtil.showModulesUpdatedNotification(module.getAppName());
|
NotificationUtil.showNotification(context, packageName, module.getAppName(), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -74,17 +74,7 @@ public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleLi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Comparator<PackageInfo> cmp = AppHelper.getAppListComparator(0, pm);
|
Comparator<PackageInfo> cmp = AppHelper.getAppListComparator(0, pm);
|
||||||
fullList.sort((a, b) -> {
|
fullList.sort((a, b) -> cmp.compare(a.pkg, b.pkg));
|
||||||
boolean aChecked = moduleUtil.isModuleEnabled(a.packageName);
|
|
||||||
boolean bChecked = moduleUtil.isModuleEnabled(b.packageName);
|
|
||||||
if (aChecked == bChecked) {
|
|
||||||
return cmp.compare(a.pkg, b.pkg);
|
|
||||||
} else if (aChecked) {
|
|
||||||
return -1;
|
|
||||||
} else {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
adapter.addAll(showList);
|
adapter.addAll(showList);
|
||||||
adapter.notifyDataSetChanged();
|
adapter.notifyDataSetChanged();
|
||||||
moduleUtil.updateModulesList();
|
moduleUtil.updateModulesList();
|
||||||
|
|
|
||||||
|
|
@ -11,31 +11,19 @@ import androidx.core.app.NotificationCompat;
|
||||||
import androidx.core.app.NotificationManagerCompat;
|
import androidx.core.app.NotificationManagerCompat;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
|
|
||||||
import io.github.lsposed.manager.App;
|
|
||||||
import io.github.lsposed.manager.R;
|
import io.github.lsposed.manager.R;
|
||||||
import io.github.lsposed.manager.ui.activity.ModulesActivity;
|
import io.github.lsposed.manager.ui.activity.AppListActivity;
|
||||||
|
|
||||||
@SuppressLint("UnspecifiedImmutableFlag")
|
@SuppressLint("UnspecifiedImmutableFlag")
|
||||||
public final class NotificationUtil {
|
public final class NotificationUtil {
|
||||||
|
|
||||||
public static final int NOTIFICATION_MODULE_NOT_ACTIVATED_YET = 0;
|
public static final int NOTIFICATION_MODULE_NOT_ACTIVATED_YET = 0;
|
||||||
private static final int NOTIFICATION_MODULES_UPDATED = 1;
|
private static final int NOTIFICATION_MODULES_UPDATED = 1;
|
||||||
private static final int PENDING_INTENT_OPEN_MODULES = 0;
|
private static final int PENDING_INTENT_OPEN_APP_LIST = 0;
|
||||||
private static final int PENDING_INTENT_OPEN_INSTALL = 1;
|
|
||||||
private static final String NOTIFICATION_MODULES_CHANNEL = "modules_channel_2";
|
private static final String NOTIFICATION_MODULES_CHANNEL = "modules_channel_2";
|
||||||
|
|
||||||
@SuppressLint("StaticFieldLeak")
|
public static void showNotification(Context context, String modulePackageName, String moduleName, boolean enabled) {
|
||||||
private static Context context = null;
|
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
|
||||||
@SuppressLint("StaticFieldLeak")
|
|
||||||
private static NotificationManagerCompat notificationManager;
|
|
||||||
|
|
||||||
public static void init() {
|
|
||||||
if (context != null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
context = App.getInstance();
|
|
||||||
notificationManager = NotificationManagerCompat.from(context);
|
|
||||||
|
|
||||||
NotificationChannelCompat.Builder channel = new NotificationChannelCompat.Builder(NOTIFICATION_MODULES_CHANNEL,
|
NotificationChannelCompat.Builder channel = new NotificationChannelCompat.Builder(NOTIFICATION_MODULES_CHANNEL,
|
||||||
NotificationManager.IMPORTANCE_HIGH)
|
NotificationManager.IMPORTANCE_HIGH)
|
||||||
|
|
@ -43,48 +31,29 @@ public final class NotificationUtil {
|
||||||
.setSound(null, null)
|
.setSound(null, null)
|
||||||
.setVibrationPattern(null);
|
.setVibrationPattern(null);
|
||||||
notificationManager.createNotificationChannel(channel.build());
|
notificationManager.createNotificationChannel(channel.build());
|
||||||
}
|
|
||||||
|
|
||||||
public static void showNotActivatedNotification(String packageName, String appName) {
|
String title = context.getString(enabled ? R.string.xposed_module_updated_notification_title : R.string.module_is_not_activated_yet);
|
||||||
Intent intent = new Intent(context, ModulesActivity.class)
|
String content = context.getString(enabled ? R.string.xposed_module_updated_notification_content : R.string.module_is_not_activated_yet_detailed, moduleName);
|
||||||
|
|
||||||
|
Intent intent = new Intent(context, AppListActivity.class)
|
||||||
|
.putExtra("modulePackageName", modulePackageName)
|
||||||
|
.putExtra("moduleName", moduleName)
|
||||||
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
|
||||||
PendingIntent pModulesTab = PendingIntent.getActivity(context, PENDING_INTENT_OPEN_MODULES, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
PendingIntent contentIntent = PendingIntent.getActivity(context, PENDING_INTENT_OPEN_APP_LIST, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
|
|
||||||
String title = context.getString(R.string.module_is_not_activated_yet);
|
|
||||||
NotificationCompat.Builder builder = getNotificationBuilder(title, appName)
|
|
||||||
.setContentIntent(pModulesTab);
|
|
||||||
|
|
||||||
NotificationCompat.BigTextStyle style = new NotificationCompat.BigTextStyle();
|
NotificationCompat.BigTextStyle style = new NotificationCompat.BigTextStyle();
|
||||||
style.setBigContentTitle(title);
|
style.bigText(content);
|
||||||
style.bigText(context.getString(R.string.module_is_not_activated_yet_detailed, appName));
|
|
||||||
builder.setStyle(style);
|
|
||||||
|
|
||||||
notificationManager.notify(packageName, NOTIFICATION_MODULE_NOT_ACTIVATED_YET, builder.build());
|
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, NOTIFICATION_MODULES_CHANNEL)
|
||||||
}
|
|
||||||
|
|
||||||
public static void showModulesUpdatedNotification(String appName) {
|
|
||||||
Intent intent = new Intent(context, ModulesActivity.class)
|
|
||||||
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
||||||
|
|
||||||
PendingIntent pInstallTab = PendingIntent.getActivity(context, PENDING_INTENT_OPEN_INSTALL, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
|
||||||
|
|
||||||
String title = context
|
|
||||||
.getString(R.string.xposed_module_updated_notification_title);
|
|
||||||
NotificationCompat.Builder builder = getNotificationBuilder(title, appName)
|
|
||||||
.setContentIntent(pInstallTab);
|
|
||||||
|
|
||||||
notificationManager.notify(null, NOTIFICATION_MODULES_UPDATED, builder.build());
|
|
||||||
}
|
|
||||||
|
|
||||||
private static NotificationCompat.Builder getNotificationBuilder(String title, String message) {
|
|
||||||
return new NotificationCompat.Builder(context, NOTIFICATION_MODULES_CHANNEL)
|
|
||||||
.setContentTitle(title)
|
.setContentTitle(title)
|
||||||
.setContentText(message)
|
.setContentText(content)
|
||||||
.setSound(null)
|
|
||||||
.setVibrate(new long[]{0})
|
|
||||||
.setAutoCancel(true)
|
.setAutoCancel(true)
|
||||||
.setSmallIcon(R.drawable.ic_notification)
|
.setSmallIcon(R.drawable.ic_notification)
|
||||||
.setColor(ContextCompat.getColor(context, R.color.colorPrimary));
|
.setColor(ContextCompat.getColor(context, R.color.colorPrimary))
|
||||||
|
.setContentIntent(contentIntent)
|
||||||
|
.setStyle(style);
|
||||||
|
|
||||||
|
notificationManager.notify(modulePackageName, enabled ? NOTIFICATION_MODULES_UPDATED : NOTIFICATION_MODULE_NOT_ACTIVATED_YET, builder.build());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -138,4 +138,5 @@
|
||||||
<string name="menu_backup_and_restore">备份…</string>
|
<string name="menu_backup_and_restore">备份…</string>
|
||||||
<string name="menu_backup">备份</string>
|
<string name="menu_backup">备份</string>
|
||||||
<string name="menu_restore">恢复</string>
|
<string name="menu_restore">恢复</string>
|
||||||
|
<string name="xposed_module_updated_notification_content">%s 已更新</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
||||||
|
|
@ -146,4 +146,5 @@
|
||||||
<string name="menu_backup_and_restore">Backup…</string>
|
<string name="menu_backup_and_restore">Backup…</string>
|
||||||
<string name="menu_backup">Backup</string>
|
<string name="menu_backup">Backup</string>
|
||||||
<string name="menu_restore">Restore</string>
|
<string name="menu_restore">Restore</string>
|
||||||
|
<string name="xposed_module_updated_notification_content">%s has been updated</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue