From e824bbb533735549adf7c0a3229f38315792f847 Mon Sep 17 00:00:00 2001 From: MartinBraquet Date: Thu, 30 Oct 2025 23:45:04 +0100 Subject: [PATCH] Add webview push notif --- android/app/src/main/AndroidManifest.xml | 1 + .../java/com/compass/app/MainActivity.java | 33 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 2ae3d18..3a651fe 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -47,4 +47,5 @@ + diff --git a/android/app/src/main/java/com/compass/app/MainActivity.java b/android/app/src/main/java/com/compass/app/MainActivity.java index 7a9fbd9..b58111d 100644 --- a/android/app/src/main/java/com/compass/app/MainActivity.java +++ b/android/app/src/main/java/com/compass/app/MainActivity.java @@ -13,7 +13,39 @@ import com.getcapacitor.BridgeWebViewClient; import org.json.JSONException; import org.json.JSONObject; +import android.Manifest; +import android.content.pm.PackageManager; +import android.os.Build; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import androidx.core.content.ContextCompat; + + + public class MainActivity extends BridgeActivity { + + // Declare this at class level + private final ActivityResultLauncher requestPermissionLauncher = + registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> { + if (isGranted) { + Log.i("CompassApp", "Permission granted"); + // Permission granted – you can show notifications + } else { + Log.i("CompassApp", "Permission denied"); + // Permission denied – handle gracefully + } + }); + + private void askNotificationPermission() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { // API 33 + if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) + != PackageManager.PERMISSION_GRANTED) { + // Permission not yet granted; request it + requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS); + } + } + } + public static class NativeBridge { @JavascriptInterface public boolean isNativeApp() { @@ -58,6 +90,7 @@ public class MainActivity extends BridgeActivity { settings.setJavaScriptEnabled(true); webView.addJavascriptInterface(new NativeBridge(), "AndroidBridge"); + askNotificationPermission(); } }