'Android 12 Exported True not showing notifications in the notification bar
I had to modify my app for Android 12. The app now runs and notifications come but only within the app itself, prior to this they would be in the notification bar. I fixed areas where it needed the android:exported="true" so it would launch on Android 12. But I'm not getting notifications in the notification bar. Could someone help me point out where I've not added the exported rule or if theres something else I need to do ?
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.spliceystudios.apps.esf"
xmlns:tools="http://schemas.android.com/tools">
<queries>
<package android:name="com.google.android.apps.maps" />
</queries>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove"/> <!-- BroadcastReceiver permission to listen to the network -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" /> <!-- Required OpenGL ES 2.0. for Maps V2 -->
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<uses-feature
android:name="android.hardware.location"
android:required="true" />
<uses-feature
android:name="android.hardware.location.gps"
android:required="true" />
<uses-feature
android:name="android.hardware.camera"
android:required="true" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true" />
<application
android:name="com.spliceystudios.apps.esf.AppController"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:networkSecurityConfig="@xml/network_security_config"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:replace="android:icon,android:theme,android:supportsRtl"
>
<activity
android:name="com.spliceystudios.apps.esf.activities.ReportIssueActivity"
android:label="@string/title_activity_report_issue"
android:theme="@style/AppTheme.NoActionBar"></activity>
<uses-library
android:name="org.apache.http.legacy"
android:required="false" /> <!-- Goolge Maps API Key -->
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/map_api_key0" />
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="@string/ad_app_id" />
<service android:name="com.spliceystudios.apps.esf.push_notification_firebase.FirebaseMessagingServiceIns"
android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name="com.spliceystudios.apps.esf.push_notification_firebase.FirebaseInstanceIDService"
android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent"
/>
<receiver android:name="com.spliceystudios.apps.esf.dtmessenger.DCMBroadcastReceiver"
android:exported="true">
<intent-filter>
<action
android:name="android.net.conn.CONNECTIVITY_CHANGE"
tools:ignore="BatteryLife" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
</intent-filter>
</receiver>
<activity
android:name="com.spliceystudios.apps.esf.activities.IntroSliderActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.activities.MessengerActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.activities.ReviewsActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.activities.OffersListActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.activities.ListUsersActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.activities.InboxActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.wuadam.awesomewebview.AwesomeWebViewActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:hardwareAccelerated="true"
android:theme="@style/FinestWebViewTheme.Light" />
<activity
android:name="com.spliceystudios.apps.esf.activities.MainActivity"
android:configChanges="uiMode"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.activities.MapDirectionActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.activities.MapStoresListActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.activities.AboutActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.activities.ProfileActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.activities.CategoriesActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.activities.ListStoresActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.activities.EventsListActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.activities.StoresListActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.activities.PeopleListActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.activities.CustomSearchActivity"
android:screenOrientation="portrait" />
<activity
android:exported="true"
android:name="com.spliceystudios.apps.esf.activities.SplashActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.spliceystudios.apps.esf.activities.SettingActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.activities.SliderActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.activities.GalleryActivity"
android:screenOrientation="portrait" />
<activity
android:exported="true"
android:name="com.spliceystudios.apps.esf.activities.OfferDetailActivity"
android:screenOrientation="portrait">
<intent-filter android:label="@string/_DP_OFFER_MESSAGE">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->
<data
android:host="@string/_DP_HOST_NAME"
android:pathPrefix="@string/DP_PATH_PREFIX_OFFER"
android:scheme="nsapp" />
<data
android:host="@string/_DP_HOST_NAME"
android:pathPrefix="@string/DP_PATH_PREFIX_OFFER"
android:scheme="http" />
<data
android:host="@string/_DP_HOST_NAME"
android:pathPrefix="@string/DP_PATH_PREFIX_OFFER"
android:scheme="https" />
<!-- WITH INDEX -->
<data
android:host="@string/_DP_HOST_NAME"
android:pathPrefix="@string/DP_PATH_PREFIX_OFFER_INDEX"
android:scheme="nsapp" />
<data
android:host="@string/_DP_HOST_NAME"
android:pathPrefix="@string/DP_PATH_PREFIX_OFFER_INDEX"
android:scheme="http" />
<data
android:host="@string/_DP_HOST_NAME"
android:pathPrefix="@string/DP_PATH_PREFIX_OFFER_INDEX"
android:scheme="https" />
</intent-filter>
</activity>
<activity
android:name="com.spliceystudios.apps.esf.activities.StoreDetailActivity"
android:screenOrientation="portrait"
android:exported="true">
<intent-filter android:label="@string/_DP_STORE_MESSAGE">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->
<data
android:host="@string/_DP_HOST_NAME"
android:pathPrefix="@string/DP_PATH_PREFIX_STORE"
android:scheme="nsapp" />
<data
android:host="@string/_DP_HOST_NAME"
android:pathPrefix="@string/DP_PATH_PREFIX_STORE"
android:scheme="http" />
<data
android:host="@string/_DP_HOST_NAME"
android:pathPrefix="@string/DP_PATH_PREFIX_STORE"
android:scheme="https" />
<!-- WITH INDEX -->
<data
android:host="@string/_DP_HOST_NAME"
android:pathPrefix="@string/DP_PATH_PREFIX_STORE_INDEX"
android:scheme="nsapp" />
<data
android:host="@string/_DP_HOST_NAME"
android:pathPrefix="@string/DP_PATH_PREFIX_STORE_INDEX"
android:scheme="http" />
<data
android:host="@string/_DP_HOST_NAME"
android:pathPrefix="@string/DP_PATH_PREFIX_STORE_INDEX"
android:scheme="https" />
<!-- note that the leading "/" is required for pathPrefix -->
</intent-filter>
</activity>
<activity
android:name="com.spliceystudios.apps.esf.activities.EventDetailActivity"
android:screenOrientation="portrait"
android:exported="true">
<intent-filter android:label="@string/_DP_EVENT_MESSAGE">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="@string/_DP_HOST_NAME"
android:pathPrefix="@string/DP_PATH_PREFIX_EVENT"
android:scheme="nsapp" />
<data
android:host="@string/_DP_HOST_NAME"
android:pathPrefix="@string/DP_PATH_PREFIX_EVENT"
android:scheme="http" />
<data
android:host="@string/_DP_HOST_NAME"
android:pathPrefix="@string/DP_PATH_PREFIX_EVENT"
android:scheme="https" />
<!-- note that the leading "/" is required for pathPrefix -->
<!-- WITH INDEX -->
<data
android:host="@string/_DP_HOST_NAME"
android:pathPrefix="@string/DP_PATH_PREFIX_EVENT_INDEX"
android:scheme="nsapp" />
<data
android:host="@string/_DP_HOST_NAME"
android:pathPrefix="@string/DP_PATH_PREFIX_EVENT_INDEX"
android:scheme="http" />
<data
android:host="@string/_DP_HOST_NAME"
android:pathPrefix="@string/DP_PATH_PREFIX_EVENT_INDEX"
android:scheme="https" />
</intent-filter>
</activity> <!-- Version 2.0 activities -->
<activity
android:name="com.spliceystudios.apps.esf.activities.V2MainActivity"
android:configChanges="uiMode"
android:label="@string/title_activity_v2_main"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name="com.spliceystudios.apps.esf.activities.CustomSearchActivity$LoginActivityV2"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.activities.CustomSearchActivity$ResultFilterActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.customView.AdvancedWebViewActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.customView.PaymentWebViewActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.booking.views.activities.ServiceOptionsActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.booking.views.activities.BookingCheckoutActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.booking.views.activities.BookingListActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.booking.views.activities.BookingDetailActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.spliceystudios.apps.esf.activities.FindMyPlaceActivity"
android:screenOrientation="portrait" />
</application>
</manifest>
Solution 1:[1]
In your FirebaseMessagingServiceIns / MESSAGING_EVENT section, change the exported value to false
<service android:name="com.spliceystudios.apps.esf.push_notification_firebase.FirebaseMessagingServiceIns"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
and it'll match the guidelines on the Firebase website https://firebase.google.com/docs/cloud-messaging/android/client
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Mike Irving |
