diff --git a/android/src/main/java/com/vanethos/notification_permissions/NotificationPermissionsPlugin.java b/android/src/main/java/com/vanethos/notification_permissions/NotificationPermissionsPlugin.java index b4c10cd..5c2be43 100644 --- a/android/src/main/java/com/vanethos/notification_permissions/NotificationPermissionsPlugin.java +++ b/android/src/main/java/com/vanethos/notification_permissions/NotificationPermissionsPlugin.java @@ -6,9 +6,9 @@ import android.net.Uri; import android.os.Build; import android.provider.Settings; -import android.util.Log; import androidx.core.app.NotificationManagerCompat; + import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; import io.flutter.plugin.common.PluginRegistry.Registrar; @@ -26,7 +26,7 @@ public static void registerWith(Registrar registrar) { private final Context context; private NotificationPermissionsPlugin(Registrar registrar) { - this.context = registrar.activity(); + this.context = registrar.activeContext(); } @Override @@ -35,30 +35,31 @@ public void onMethodCall(MethodCall call, MethodChannel.Result result) { result.success(getNotificationPermissionStatus()); } else if ("requestNotificationPermissions".equalsIgnoreCase(call.method)) { if (PERMISSION_DENIED.equalsIgnoreCase(getNotificationPermissionStatus())) { - if (context instanceof Activity) { - // https://stackoverflow.com/a/45192258 - final Intent intent = new Intent(); - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - // ACTION_APP_NOTIFICATION_SETTINGS was introduced in API level 26 aka Android O - intent.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS); - intent.putExtra(Settings.EXTRA_APP_PACKAGE, context.getPackageName()); - } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ - intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS"); - intent.putExtra("app_package", context.getPackageName()); - intent.putExtra("app_uid", context.getApplicationInfo().uid); - } else { - intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); - intent.addCategory(Intent.CATEGORY_DEFAULT); - intent.setData(Uri.parse("package:" + context.getPackageName())); - } + if (context == null) { + result.error(call.method, "context is null", null); + return; + } - context.startActivity(intent); + // https://stackoverflow.com/a/45192258 + final Intent intent = new Intent(); - result.success(PERMISSION_DENIED); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + // ACTION_APP_NOTIFICATION_SETTINGS was introduced in API level 26 aka Android O + intent.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS); + intent.putExtra(Settings.EXTRA_APP_PACKAGE, context.getPackageName()); + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ + intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS"); + intent.putExtra("app_package", context.getPackageName()); + intent.putExtra("app_uid", context.getApplicationInfo().uid); } else { - result.error(call.method, "context is not instance of Activity", null); + intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); + intent.addCategory(Intent.CATEGORY_DEFAULT); + intent.setData(Uri.parse("package:" + context.getPackageName())); } + + context.startActivity(intent); + + result.success(PERMISSION_DENIED); } else { result.success(PERMISSION_GRANTED); }