package.json
{
"name": "Picky_Assist",
"version": "0.0.1",
"private": true,
"scripts": {
"android": "react-native run-android",
"ios": "react-native run-ios",
"lint": "eslint .",
"start": "react-native start",
"test": "jest"
},
"dependencies": {
"@react-native-async-storage/async-storage": "^1.24.0",
"@react-native-community/cli-platform-ios": "^11.3.5",
"@react-native-community/netinfo": "^9.4.1",
"@react-native-community/progress-view": "^1.4.1",
"@react-native-community/push-notification-ios": "^1.11.0",
"@react-native-cookies/cookies": "^6.2.1",
"@react-native-firebase/app": "^20.3.0",
"@react-native-firebase/messaging": "^20.3.0",
"@react-native/gradle-plugin": "^0.74.85",
"@react-navigation/drawer": "^6.7.2",
"@react-navigation/native": "^6.1.18",
"@react-navigation/native-stack": "^6.10.1",
"@reduxjs/toolkit": "^1.9.5",
"axios": "^1.7.2",
"crypto-js": "^4.1.1",
"deprecated-react-native-prop-types": "^4.2.3",
"package": "^1.0.1",
"react": "18.2.0",
"react-native": "0.74.3",
"react-native-base64": "^0.2.1",
"react-native-battery-optimization-check": "^1.0.8",
"react-native-camera": "^4.2.1",
"react-native-date-picker": "^4.3.3",
"react-native-device-info": "^11.1.0",
"react-native-fs": "^2.20.0",
"react-native-gesture-handler": "^2.16.2",
"react-native-gradle-plugin": "^0.71.19",
"react-native-linear-gradient": "^2.7.3",
"react-native-permissions": "^3.10.1",
"react-native-push-notification": "^8.1.1",
"react-native-qrcode-scanner": "^1.5.5",
"react-native-reanimated": "^3.4.1",
"react-native-restart": "^0.0.27",
"react-native-safe-area-context": "^4.6.4",
"react-native-screens": "^3.22.1",
"react-native-simple-toast": "^3.3.1",
"react-native-snackbar": "^2.6.2",
"react-native-splash-screen": "^3.3.0",
"react-native-toast-message": "^2.2.0",
"react-native-webview": "^11.26.1",
"react-redux": "^8.1.1",
"redux": "^4.2.1",
"redux-persist": "^6.0.0",
"toggle-switch-react-native": "^3.3.0"
},
"reactNativePermissionsIOS": [
"Camera",
"MediaLibrary",
"Microphone",
"Notifications",
"PhotoLibrary",
"PhotoLibraryAddOnly"
],
"devDependencies": {
"@babel/core": "^7.24.9",
"@babel/preset-env": "^7.24.8",
"@babel/runtime": "^7.24.8",
"@react-native/babel-preset": "0.74.85",
"@react-native/eslint-config": "^0.74.85",
"@react-native/metro-config": "^0.74.85",
"@react-native/typescript-config": "0.74.85",
"@types/crypto-js": "^4.1.1",
"@types/metro-config": "^0.76.3",
"@types/react": "^18.3.3",
"@types/react-native-push-notification": "^8.1.1",
"@types/react-test-renderer": "^18.0.0",
"babel-jest": "^29.6.3",
"eslint": "^8.19.0",
"jest": "^29.6.3",
"prettier": "^2.8.8",
"react-test-renderer": "18.2.0",
"typescript": "5.0.4"
},
"engines": {
"node": ">=18"
},
"packageManager": "[email protected]",
"resolutions": {
"react-native-permissions": "^3.8.0"
},
"overrides": {
"react-native-qrcode-scanner": {
"react-native-permissions": "^3.8.0"
}
}
}
android/build.gradle
buildscript {
ext {
buildToolsVersion = "34.0.0"
minSdkVersion = 26
compileSdkVersion = 34
targetSdkVersion = 34
ndkVersion = "26.1.10909125"
kotlinVersion = '1.9.22'
}
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.google.gms:google-services:4.3.15'
classpath("com.android.tools.build:gradle")
classpath("com.facebook.react:react-native-gradle-plugin")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.4'
classpath 'com.google.firebase:perf-plugin:1.4.2'
}
}
Androidmanifest.xml
<manifest xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" />
<uses-permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT" />
<uses-permission android:name="android.permission.PROJECT_MEDIA" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.AUDIO_CAPTURE" />
<uses-permission android:name="android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.Manifest.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.BIND_SERVICE" />
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/>
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission
android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-feature android:name="android.hardware.microphone" android:required="false"/>
<uses-feature
android:name="android.hardware.telephony"
android:required="false" />
<application
android:name=".MainApplication"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher"
android:allowBackup="false"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
<!-- React Native Notifications -->
<!-- Change the value to true to enable pop-up for in foreground on receiving remote notifications (for prevent duplicating while showing local notifications set this to false) -->
<meta-data android:name="com.dieam.reactnativepushnotification.notification_foreground"
android:value="true"/>
<meta-data android:name="com.dieam.reactnativepushnotification.notification_background"
android:value="false"/>
<meta-data android:name="com.dieam.reactnativepushnotification.channel_create_default"
android:value="false "/>
<meta-data android:name="com.dieam.reactnativepushnotification.default_notification_icon"
android:resource="@drawable/notificationsmicon"/>
<meta-data android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@mipmap/ic_launcher" />
<!-- Firebase Performace monitoring -->
<meta-data android:name="firebase_performance_logcat_enabled"
android:value="true" />
<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationActions" />
<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationPublisher" />
<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationBootEventReceiver"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
<action android:name="com.htc.intent.action.QUICKBOOT_POWERON"/>
</intent-filter>
</receiver>
<service
android:name="com.pickyassist.tb.OverlayView.OverlayService"
android:enabled="true"
android:exported="true"
android:foregroundServiceType="mediaProjection"/>
<service
android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationListenerService"
android:exported="false" >
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name="com.pickyassist.tb.HeadlessJs" />
<service
android:name=".NetworkChangeService"
android:exported="false" />
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|smallestScreenSize|uiMode"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustResize"
android:screenOrientation="portrait"
android:resizeableActivity="false"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".BroadcastReceiverHelper" android:exported="true" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_ACTION" />
<action android:name="android.intent.ACTION_CALL" />
<action android:name="android.intent.action.DIAL"/>
<action android:name="android.intent.action.PHONE_STATE" />
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
<action android:name="com.pickyassist.tb.ACTION_TRIGGER_ALARM" />
<action android:name="com.pickyassist.SOME_ACTION" />
</intent-filter>
</receiver>
</application>
</manifest>
“React Native 0.74.3 crashes when the app starts on Android 14 with Display over App enabled.”
i will provided my react native codes above and the version is latest 0.74.3
This problem only occurs with Android 14, and the app works when the display over the app is disabled.