react-native-notify-kit 9.1.21 → 9.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.md +6 -2
  2. package/RNNotifee.podspec +1 -0
  3. package/android/build.gradle +67 -35
  4. package/android/proguard-rules.pro +14 -1
  5. package/android/schemas/app.notifee.core.database.NotifeeCoreDatabase/1.json +44 -0
  6. package/android/schemas/app.notifee.core.database.NotifeeCoreDatabase/2.json +51 -0
  7. package/android/src/androidTest/java/app/notifee/core/ExampleInstrumentedTest.java +25 -0
  8. package/android/src/androidTest/java/app/notifee/core/database/NotifeeCoreDatabaseTest.java +55 -0
  9. package/android/src/main/AndroidManifest.xml +71 -4
  10. package/android/src/main/java/app/notifee/core/AlarmPermissionBroadcastReceiver.java +25 -0
  11. package/android/src/main/java/app/notifee/core/BlockStateBroadcastReceiver.java +164 -0
  12. package/android/src/main/java/app/notifee/core/ChannelManager.java +350 -0
  13. package/android/src/main/java/app/notifee/core/ContextHolder.java +33 -0
  14. package/android/src/main/java/app/notifee/core/EventBus.java +63 -0
  15. package/android/src/main/java/app/notifee/core/EventSubscriber.java +82 -0
  16. package/android/src/main/java/app/notifee/core/ForegroundService.java +347 -0
  17. package/android/src/main/java/app/notifee/core/InitProvider.java +93 -0
  18. package/android/src/main/java/app/notifee/core/KeepForSdk.java +26 -0
  19. package/android/src/main/java/app/notifee/core/Logger.java +68 -0
  20. package/android/src/main/java/app/notifee/core/Notifee.java +570 -0
  21. package/android/src/main/java/app/notifee/core/NotifeeAlarmManager.java +352 -0
  22. package/android/src/main/java/app/notifee/core/NotificationAlarmReceiver.java +42 -0
  23. package/android/src/main/java/app/notifee/core/NotificationManager.java +939 -0
  24. package/android/src/main/java/app/notifee/core/NotificationPendingIntent.java +191 -0
  25. package/android/src/main/java/app/notifee/core/NotificationReceiverActivity.java +39 -0
  26. package/android/src/main/java/app/notifee/core/NotificationReceiverHandler.java +144 -0
  27. package/android/src/main/java/app/notifee/core/Preferences.java +79 -0
  28. package/android/src/main/java/app/notifee/core/RebootBroadcastReceiver.java +39 -0
  29. package/android/src/main/java/app/notifee/core/ReceiverService.java +281 -0
  30. package/android/src/main/java/app/notifee/core/Worker.java +87 -0
  31. package/android/src/main/java/app/notifee/core/database/NotifeeCoreDatabase.java +77 -0
  32. package/android/src/main/java/app/notifee/core/database/WorkDataDao.java +52 -0
  33. package/android/src/main/java/app/notifee/core/database/WorkDataEntity.java +68 -0
  34. package/android/src/main/java/app/notifee/core/database/WorkDataRepository.java +107 -0
  35. package/android/src/main/java/app/notifee/core/event/BlockStateEvent.java +102 -0
  36. package/android/src/main/java/app/notifee/core/event/ForegroundServiceEvent.java +48 -0
  37. package/android/src/main/java/app/notifee/core/event/InitialNotificationEvent.java +50 -0
  38. package/android/src/main/java/app/notifee/core/event/LogEvent.java +74 -0
  39. package/android/src/main/java/app/notifee/core/event/MainComponentEvent.java +33 -0
  40. package/android/src/main/java/app/notifee/core/event/NotificationEvent.java +107 -0
  41. package/android/src/main/java/app/notifee/core/interfaces/EventListener.java +39 -0
  42. package/android/src/main/java/app/notifee/core/interfaces/MethodCallResult.java +27 -0
  43. package/android/src/main/java/app/notifee/core/model/ChannelGroupModel.java +48 -0
  44. package/android/src/main/java/app/notifee/core/model/ChannelModel.java +126 -0
  45. package/android/src/main/java/app/notifee/core/model/IntervalTriggerModel.java +63 -0
  46. package/android/src/main/java/app/notifee/core/model/NotificationAndroidActionModel.java +125 -0
  47. package/android/src/main/java/app/notifee/core/model/NotificationAndroidModel.java +688 -0
  48. package/android/src/main/java/app/notifee/core/model/NotificationAndroidPressActionModel.java +150 -0
  49. package/android/src/main/java/app/notifee/core/model/NotificationAndroidStyleModel.java +336 -0
  50. package/android/src/main/java/app/notifee/core/model/NotificationModel.java +72 -0
  51. package/android/src/main/java/app/notifee/core/model/TimestampTriggerModel.java +206 -0
  52. package/android/src/main/java/app/notifee/core/model/package-info.java +4 -0
  53. package/android/src/main/java/app/notifee/core/utility/AlarmUtils.java +52 -0
  54. package/android/src/main/java/app/notifee/core/utility/Callbackable.java +12 -0
  55. package/android/src/main/java/app/notifee/core/utility/ColorUtils.java +62 -0
  56. package/android/src/main/java/app/notifee/core/utility/ExtendedListenableFuture.java +84 -0
  57. package/android/src/main/java/app/notifee/core/utility/IntentUtils.java +146 -0
  58. package/android/src/main/java/app/notifee/core/utility/ObjectUtils.java +191 -0
  59. package/android/src/main/java/app/notifee/core/utility/PowerManagerUtils.java +338 -0
  60. package/android/src/main/java/app/notifee/core/utility/ResourceUtils.java +308 -0
  61. package/android/src/main/java/app/notifee/core/utility/TextUtils.java +28 -0
  62. package/android/src/main/java/app/notifee/core/utility/package-info.java +4 -0
  63. package/android/src/test/java/app/notifee/core/model/NotificationAndroidPressActionModelTest.java +56 -0
  64. package/android/src/test/java/app/notifee/core/model/TimestampTriggerModelTest.java +44 -0
  65. package/dist/version.d.ts +1 -1
  66. package/dist/version.js +1 -1
  67. package/dist/version.js.map +1 -1
  68. package/package.json +2 -2
  69. package/src/version.ts +1 -1
  70. package/android/libs/app/notifee/core/202108261754/core-202108261754.aar +0 -0
  71. package/android/libs/app/notifee/core/202108261754/core-202108261754.aar.md5 +0 -1
  72. package/android/libs/app/notifee/core/202108261754/core-202108261754.aar.sha1 +0 -1
  73. package/android/libs/app/notifee/core/202108261754/core-202108261754.aar.sha256 +0 -1
  74. package/android/libs/app/notifee/core/202108261754/core-202108261754.aar.sha512 +0 -1
  75. package/android/libs/app/notifee/core/202108261754/core-202108261754.module +0 -146
  76. package/android/libs/app/notifee/core/202108261754/core-202108261754.module.md5 +0 -1
  77. package/android/libs/app/notifee/core/202108261754/core-202108261754.module.sha1 +0 -1
  78. package/android/libs/app/notifee/core/202108261754/core-202108261754.module.sha256 +0 -1
  79. package/android/libs/app/notifee/core/202108261754/core-202108261754.module.sha512 +0 -1
  80. package/android/libs/app/notifee/core/202108261754/core-202108261754.pom +0 -64
  81. package/android/libs/app/notifee/core/202108261754/core-202108261754.pom.md5 +0 -1
  82. package/android/libs/app/notifee/core/202108261754/core-202108261754.pom.sha1 +0 -1
  83. package/android/libs/app/notifee/core/202108261754/core-202108261754.pom.sha256 +0 -1
  84. package/android/libs/app/notifee/core/202108261754/core-202108261754.pom.sha512 +0 -1
  85. package/android/libs/app/notifee/core/maven-metadata.xml +0 -13
  86. package/android/libs/app/notifee/core/maven-metadata.xml.md5 +0 -1
  87. package/android/libs/app/notifee/core/maven-metadata.xml.sha1 +0 -1
  88. package/android/libs/app/notifee/core/maven-metadata.xml.sha256 +0 -1
  89. package/android/libs/app/notifee/core/maven-metadata.xml.sha512 +0 -1
@@ -0,0 +1,191 @@
1
+ package app.notifee.core.utility;
2
+
3
+ /*
4
+ * Copyright (c) 2016-present Invertase Limited & Contributors
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this library except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ *
18
+ */
19
+
20
+ import android.os.Bundle;
21
+ import android.os.Parcel;
22
+ import androidx.annotation.NonNull;
23
+ import androidx.annotation.Nullable;
24
+ import java.lang.reflect.Field;
25
+ import java.lang.reflect.InvocationTargetException;
26
+ import java.util.ArrayList;
27
+ import java.util.HashMap;
28
+ import java.util.List;
29
+ import java.util.Map;
30
+ import java.util.Objects;
31
+
32
+ public class ObjectUtils {
33
+
34
+ public static @Nullable Class<?> getClassForName(String className) {
35
+ try {
36
+ return Class.forName(className);
37
+ } catch (ClassNotFoundException e) {
38
+ return null;
39
+ }
40
+ }
41
+
42
+ public static @Nullable Object getClassInstanceFromDefaultConstructor(@Nullable Class<?> clazz) {
43
+ Object classInstance = null;
44
+ if (clazz == null) return null;
45
+ try {
46
+ classInstance = clazz.getConstructors()[0].newInstance();
47
+ } catch (IllegalAccessException e) {
48
+ // noop
49
+ } catch (InstantiationException e) {
50
+ // noop
51
+ } catch (InvocationTargetException e) {
52
+ // noop
53
+ }
54
+ return classInstance;
55
+ }
56
+
57
+ public static Map<String, Object> getClassProperties(Class<?> clazz) {
58
+ Map<String, Object> properties = new HashMap<>();
59
+ try {
60
+ for (Field field : clazz.getDeclaredFields()) {
61
+ field.setAccessible(true);
62
+ Object value = field.get(clazz);
63
+ if (value != null) {
64
+ properties.put(field.getName(), value);
65
+ }
66
+ }
67
+ } catch (IllegalAccessException exception) {
68
+ return null;
69
+ }
70
+ return properties;
71
+ }
72
+
73
+ public static int getInt(@Nullable Object value) {
74
+ if (value == null) {
75
+ return 0;
76
+ }
77
+
78
+ if (value instanceof Double) {
79
+ return (int) ((Double) value).doubleValue();
80
+ }
81
+
82
+ return (int) value;
83
+ }
84
+
85
+ public static long getLong(Object value) {
86
+ if (value instanceof Double) {
87
+ return (long) ((Double) value).doubleValue();
88
+ }
89
+
90
+ return (long) value;
91
+ }
92
+
93
+ public static byte[] bundleToBytes(@NonNull Bundle bundle) {
94
+ Parcel parcel = Parcel.obtain();
95
+ parcel.writeBundle(bundle);
96
+ byte[] bytes = parcel.marshall();
97
+ parcel.recycle();
98
+ return bytes;
99
+ }
100
+
101
+ @NonNull
102
+ public static Bundle bytesToBundle(byte[] bytes) {
103
+ Parcel parcel = Parcel.obtain();
104
+ parcel.unmarshall(bytes, 0, bytes.length);
105
+ parcel.setDataPosition(0);
106
+ Bundle bundle = parcel.readBundle(ObjectUtils.class.getClassLoader());
107
+ parcel.recycle();
108
+ return Objects.requireNonNull(bundle);
109
+ }
110
+
111
+ public static Map<String, Object> bundleToMap(Bundle bundle) throws IllegalArgumentException {
112
+ Map<String, Object> map = new HashMap<>();
113
+ for (String key : bundle.keySet()) {
114
+ Object value = bundle.get(key);
115
+ if (value == null) {
116
+ map.put(key, null);
117
+ } else if (value.getClass().isArray()) {
118
+ map.put(key, arrayToMap(value));
119
+ } else if (value instanceof Bundle) {
120
+ map.put(key, bundleToMap((Bundle) value));
121
+ } else if (value instanceof List) {
122
+ map.put(key, listToMap((List<?>) value));
123
+ } else {
124
+ map.put(key, value);
125
+ }
126
+ }
127
+ return map;
128
+ }
129
+
130
+ public static ArrayList<Object> arrayToMap(Object array) throws IllegalArgumentException {
131
+ ArrayList<Object> catalystArray = new ArrayList<>();
132
+ if (array instanceof String[]) {
133
+ for (String v : (String[]) array) {
134
+ catalystArray.add(v);
135
+ }
136
+ } else if (array instanceof Bundle[]) {
137
+ for (Bundle v : (Bundle[]) array) {
138
+ catalystArray.add(ObjectUtils.bundleToMap(v));
139
+ }
140
+ } else if (array instanceof int[]) {
141
+ for (int v : (int[]) array) {
142
+ catalystArray.add(v);
143
+ }
144
+ } else if (array instanceof float[]) {
145
+ for (float v : (float[]) array) {
146
+ catalystArray.add(v);
147
+ }
148
+ } else if (array instanceof double[]) {
149
+ for (double v : (double[]) array) {
150
+ catalystArray.add(v);
151
+ }
152
+ } else if (array instanceof boolean[]) {
153
+ for (boolean v : (boolean[]) array) {
154
+ catalystArray.add(v);
155
+ }
156
+ } else {
157
+ throw new IllegalArgumentException("Unknown array type " + array.getClass());
158
+ }
159
+ return catalystArray;
160
+ }
161
+
162
+ public static ArrayList<Object> listToMap(List<?> list) throws IllegalArgumentException {
163
+ ArrayList<Object> catalystArray = new ArrayList<>();
164
+ for (Object obj : list) {
165
+ if (obj == null) {
166
+ catalystArray.add(null);
167
+ } else if (obj.getClass().isArray()) {
168
+ catalystArray.add(arrayToMap(obj));
169
+ } else if (obj instanceof Bundle) {
170
+ catalystArray.add(ObjectUtils.bundleToMap((Bundle) obj));
171
+ } else if (obj instanceof List) {
172
+ catalystArray.add(listToMap((List<?>) obj));
173
+ } else if (obj instanceof String) {
174
+ catalystArray.add((String) obj);
175
+ } else if (obj instanceof Integer) {
176
+ catalystArray.add((Integer) obj);
177
+ } else if (obj instanceof Number) {
178
+ catalystArray.add(((Number) obj).doubleValue());
179
+ } else if (obj instanceof Boolean) {
180
+ catalystArray.add((Boolean) obj);
181
+ } else {
182
+ throw new IllegalArgumentException("Unknown value type " + obj.getClass());
183
+ }
184
+ }
185
+ return catalystArray;
186
+ }
187
+
188
+ public interface TypedCallback<T> {
189
+ void call(T t);
190
+ }
191
+ }
@@ -0,0 +1,338 @@
1
+ package app.notifee.core.utility;
2
+
3
+ /*
4
+ * Copyright (c) 2016-present Invertase Limited & Contributors
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this library except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ *
18
+ */
19
+
20
+ import android.app.Activity;
21
+ import android.content.ComponentName;
22
+ import android.content.Context;
23
+ import android.content.Intent;
24
+ import android.net.Uri;
25
+ import android.os.Build;
26
+ import android.os.Bundle;
27
+ import android.os.PowerManager;
28
+ import android.provider.Settings;
29
+ import app.notifee.core.ContextHolder;
30
+ import app.notifee.core.Logger;
31
+ import java.util.ArrayList;
32
+ import java.util.Arrays;
33
+ import java.util.List;
34
+ import java.util.Locale;
35
+
36
+ public class PowerManagerUtils {
37
+ private static final String TAG = "PowerManagerUtils";
38
+ private static volatile Intent sPowerManagerIntentCache;
39
+
40
+ public static void setPowerManagerIntentCache(Intent intent) {
41
+ synchronized (PowerManagerUtils.class) {
42
+ sPowerManagerIntentCache = intent;
43
+ }
44
+ }
45
+
46
+ public static Intent getPowerManagerIntent() {
47
+ synchronized (PowerManagerUtils.class) {
48
+ return sPowerManagerIntentCache;
49
+ }
50
+ }
51
+
52
+ /**
53
+ * Attempts to open the device's battery optimization settings
54
+ *
55
+ * @param activity
56
+ */
57
+ public static void openBatteryOptimizationSettings(Activity activity) {
58
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
59
+ return;
60
+ }
61
+
62
+ try {
63
+ Intent intent = new Intent();
64
+ intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
65
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
66
+
67
+ if (activity != null) {
68
+ Boolean isAvailableOnDevice =
69
+ IntentUtils.isAvailableOnDevice(ContextHolder.getApplicationContext(), intent);
70
+
71
+ if (!isAvailableOnDevice) {
72
+ Logger.d(TAG, "battery optimization settings is not available on device");
73
+ return;
74
+ }
75
+
76
+ IntentUtils.startActivityOnUiThread(activity, intent);
77
+ }
78
+ } catch (Exception e) {
79
+ Logger.e(TAG, "An error occurred whilst trying to open battery optimization settings", e);
80
+ }
81
+ }
82
+
83
+ /**
84
+ * Returns true if the app has battery optimization enabled
85
+ *
86
+ * @param context
87
+ */
88
+ public static Boolean isBatteryOptimizationEnabled(Context context) {
89
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
90
+ return false;
91
+ }
92
+ PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
93
+ return !pm.isIgnoringBatteryOptimizations(context.getPackageName());
94
+ }
95
+
96
+ /**
97
+ * Lights up the screen if it is not already lit
98
+ *
99
+ * @param context
100
+ */
101
+ // FULL_WAKE_LOCK and ON_AFTER_RELEASE are deprecated since API 17, but there is no
102
+ // non-deprecated wake lock flag that can light up the screen from a Service/BroadcastReceiver
103
+ // context. WindowManager.FLAG_KEEP_SCREEN_ON requires an Activity.
104
+ @SuppressWarnings("deprecation")
105
+ public static void lightUpScreenIfNeeded(Context context) {
106
+ PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
107
+ Boolean isInteractive = pm.isInteractive();
108
+
109
+ if (isInteractive == false) {
110
+ PowerManager.WakeLock wl =
111
+ pm.newWakeLock(
112
+ PowerManager.FULL_WAKE_LOCK
113
+ | PowerManager.ACQUIRE_CAUSES_WAKEUP
114
+ | PowerManager.ON_AFTER_RELEASE,
115
+ "Notifee:lock");
116
+ wl.acquire(3000L);
117
+
118
+ PowerManager.WakeLock wl_cpu =
119
+ pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Notifee:cpuLock");
120
+ wl_cpu.acquire(3000L);
121
+ }
122
+ }
123
+
124
+ /**
125
+ * Retrieves information about the device and its Power Manager Settings
126
+ *
127
+ * @return PowerManagerInfo
128
+ */
129
+ public static PowerManagerInfo getPowerManagerInfo() {
130
+ String activityName;
131
+
132
+ Intent intent = findPowerManagerIntent(ContextHolder.getApplicationContext());
133
+ activityName = IntentUtils.getActivityName(intent);
134
+
135
+ PowerManagerInfo result =
136
+ new PowerManagerInfo(Build.MANUFACTURER, Build.MODEL, Build.VERSION.RELEASE, activityName);
137
+ return result;
138
+ }
139
+
140
+ /**
141
+ * Attempts to open the device's Power Manager settings
142
+ *
143
+ * @param activity
144
+ */
145
+ public static void openPowerManagerSettings(Activity activity) {
146
+ Intent intent = getPowerManagerIntent();
147
+ if (intent == null) {
148
+ intent = findPowerManagerIntent(ContextHolder.getApplicationContext());
149
+ }
150
+
151
+ if (intent != null) {
152
+ try {
153
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
154
+ IntentUtils.startActivityOnUiThread(activity, intent);
155
+ } catch (Exception exception) {
156
+ Logger.e(
157
+ TAG, "Unable to start activity: " + IntentUtils.getActivityName(intent), exception);
158
+ }
159
+ } else {
160
+ Logger.w(TAG, "Unable to find an activity to open the device's power manager");
161
+ }
162
+ }
163
+
164
+ private static Intent findPowerManagerIntent(Context context) {
165
+ String manufacturerName = Build.BRAND.toLowerCase(Locale.US);
166
+ List<Intent> possibleIntents = getManufacturerPowerManagerIntents(manufacturerName);
167
+
168
+ for (int i = 0; i < possibleIntents.size(); i++) {
169
+ Intent possibleIntent = possibleIntents.get(i);
170
+ Boolean isAvailableOnDevice = IntentUtils.isAvailableOnDevice(context, possibleIntent);
171
+ if (isAvailableOnDevice) {
172
+ setPowerManagerIntentCache(possibleIntent);
173
+ return possibleIntent;
174
+ }
175
+ }
176
+ return null;
177
+ }
178
+
179
+ private static List<Intent> getManufacturerPowerManagerIntents(String manufacturerName) {
180
+ List<Intent> possibleIntents = new ArrayList<>();
181
+ switch (manufacturerName) {
182
+ case "asus":
183
+ possibleIntents =
184
+ Arrays.asList(
185
+ createIntent(
186
+ "com.asus.mobilemanager",
187
+ "com.asus.mobilemanager.powersaver.PowerSaverSettings"),
188
+ createIntent(
189
+ "com.asus.mobilemanager", "com.asus.mobilemanager.autostart.AutoStartActivity"),
190
+ createIntent(
191
+ "com.asus.mobilemanager", "com.asus.mobilemanager.entry.FunctionActivity")
192
+ .setData(Uri.parse("mobilemanager://function/entry/AutoStart")));
193
+ break;
194
+ case "samsung":
195
+ possibleIntents =
196
+ Arrays.asList(
197
+ createIntent(
198
+ "com.samsung.android.lool",
199
+ "com.samsung.android.sm.ui.battery.BatteryActivity"),
200
+ createIntent(
201
+ "com.samsung.android.sm", "com.samsung.android.sm.ui.battery.BatteryActivity"),
202
+ createIntent(
203
+ "com.samsung.android.lool",
204
+ "com.samsung.android.sm.battery.ui.BatteryActivity"));
205
+ break;
206
+ case "huawei":
207
+ possibleIntents =
208
+ Arrays.asList(
209
+ createIntent(
210
+ "com.huawei.systemmanager",
211
+ "com.huawei.systemmanager.optimize.process.ProtectActivity"),
212
+ createIntent(
213
+ "com.huawei.systemmanager",
214
+ "com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity"),
215
+ createIntent(
216
+ "com.huawei.systemmanager",
217
+ "com.huawei.systemmanager.appcontrol.activity.StartupAppControlActivity"));
218
+ break;
219
+ case "redmi":
220
+ case "xiaomi":
221
+ possibleIntents =
222
+ Arrays.asList(
223
+ createIntent(
224
+ "com.miui.securitycenter",
225
+ "com.miui.permcenter.autostart.AutoStartManagementActivity"));
226
+ break;
227
+ case "letv":
228
+ possibleIntents =
229
+ Arrays.asList(
230
+ createIntent(
231
+ "com.letv.android.letvsafe",
232
+ "com.letv.android.letvsafe.AutobootManageActivity")
233
+ .setData(Uri.parse("mobilemanager://function/entry/AutoStart")));
234
+ break;
235
+ case "honor":
236
+ possibleIntents =
237
+ Arrays.asList(
238
+ createIntent(
239
+ "com.huawei.systemmanager",
240
+ "com.huawei.systemmanager.optimize.process.ProtectActivity"));
241
+ break;
242
+ case "coloros":
243
+ case "oppo":
244
+ possibleIntents =
245
+ Arrays.asList(
246
+ createIntent(
247
+ "com.coloros.safecenter",
248
+ "com.coloros.safecenter.permission.startup.StartupAppListActivity"),
249
+ createIntent(
250
+ "com.oppo.safe", "com.oppo.safe.permission.startup.StartupAppListActivity"),
251
+ createIntent(
252
+ "com.coloros.safecenter",
253
+ "com.coloros.safecenter.startupapp.StartupAppListActivity")
254
+ .setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS),
255
+ createIntent(
256
+ "com.coloros.oppoguardelf",
257
+ "com.coloros.powermanager.fuelgaue.PowerUsageModelActivity"),
258
+ createIntent(
259
+ "com.coloros.oppoguardelf",
260
+ "com.coloros.powermanager.fuelgaue.PowerSaverModeActivity"),
261
+ createIntent(
262
+ "com.coloros.oppoguardelf",
263
+ "com.coloros.powermanager.fuelgaue.PowerConsumptionActivity"));
264
+ break;
265
+ case "vivo":
266
+ possibleIntents =
267
+ Arrays.asList(
268
+ createIntent(
269
+ "com.iqoo.secure", "com.iqoo.secure.ui.phoneoptimize.AddWhiteListActivity"),
270
+ createIntent(
271
+ "com.vivo.permissionmanager",
272
+ "com.vivo.permissionmanager.activity.BgStartUpManagerActivity"),
273
+ createIntent(
274
+ "com.iqoo.secure", "com.iqoo.secure.ui.phoneoptimize.BgStartUpManager"));
275
+ break;
276
+ case "nokia":
277
+ possibleIntents =
278
+ Arrays.asList(
279
+ createIntent(
280
+ "com.evenwell.powersaving.g3",
281
+ "com.evenwell.powersaving.g3.exception.PowerSaverExceptionActivity"));
282
+ break;
283
+ case "oneplus":
284
+ possibleIntents =
285
+ Arrays.asList(
286
+ createIntent(
287
+ "com.oneplus.security",
288
+ "com.oneplus.security.chainlaunch.view.ChainLaunchAppListActivity"));
289
+ break;
290
+ case "meizu":
291
+ possibleIntents =
292
+ Arrays.asList(
293
+ createIntent("com.meizu.safe", "com.meizu.safe.security.SHOW_APPSEC")
294
+ .addCategory(Intent.CATEGORY_DEFAULT));
295
+ break;
296
+ case "htc":
297
+ possibleIntents =
298
+ Arrays.asList(
299
+ createIntent(
300
+ "com.htc.pitroad", "com.htc.pitroad.landingpage.activity.LandingPageActivity"));
301
+ break;
302
+ default:
303
+ break;
304
+ }
305
+
306
+ return possibleIntents;
307
+ }
308
+
309
+ private static Intent createIntent(String pkg, String cls) {
310
+ Intent intent = new Intent();
311
+ intent.setComponent(new ComponentName(pkg, cls));
312
+ return intent;
313
+ }
314
+
315
+ public static class PowerManagerInfo {
316
+ String manufacturer;
317
+ String model;
318
+ String version;
319
+ String activity;
320
+
321
+ public PowerManagerInfo(String manufacturer, String model, String version, String activity) {
322
+ this.manufacturer = manufacturer;
323
+ this.model = model;
324
+ this.version = version;
325
+ this.activity = activity;
326
+ }
327
+
328
+ public Bundle toBundle() {
329
+ Bundle bundle = new Bundle();
330
+ bundle.putString("manufacturer", this.manufacturer);
331
+ bundle.putString("model", this.model);
332
+ bundle.putString("version", this.version);
333
+ bundle.putString("activity", this.activity);
334
+
335
+ return bundle;
336
+ }
337
+ }
338
+ }