Add webview push notif

This commit is contained in:
MartinBraquet
2025-10-30 23:45:04 +01:00
parent 7de0e351f3
commit e824bbb533
2 changed files with 34 additions and 0 deletions

View File

@@ -47,4 +47,5 @@
<!-- Permissions -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
</manifest>

View File

@@ -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<String> 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();
}
}