You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: DOSafe-Mobile-Architecture.md
+91-5Lines changed: 91 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -263,13 +263,99 @@ Requires user to set DOSafe as default phone app screening provider (RoleManager
263
263
264
264
CallDirectory Extension syncs DOSafe block list to iOS system. Updates via background fetch (max 24h). iOS does NOT support dynamic per-call screening — only static block list + caller ID label.
Verified by dumping Truecaller manifest (`aapt2 dump xmltree`). The wrong permission name causes `RoleManager.createRequestRoleIntent()` to launch but immediately return `RESULT_CANCELED` (code=0) without showing the system picker dialog.
348
+
349
+
**FlutterFragmentActivity required:**
350
+
Use `FlutterFragmentActivity` (not `FlutterActivity`) in `MainActivity.kt` to support `ActivityResultLauncher` for role requests on Android 12+.
351
+
352
+
**Bundle IDs:**
353
+
- Android: `me.dos.dosafe` (namespace in build.gradle.kts)
354
+
- iOS main: `me.dos.dosafe`
355
+
- iOS CallerID: `me.dos.dosafe.callerid`
356
+
- iOS LiveCallerID: `me.dos.dosafe.livecallerid`
357
+
- Kotlin package: `io.dosafe.dosafe_mobile` (legacy, does not affect functionality)
358
+
359
+
**Signing:**
360
+
- Android keystore: `android/app/dosafe-release.jks` (gitignored, base64 in GitHub Secrets)
0 commit comments