NotificationService: Indirect notification activity start (trampoline) from com.xxx.xxx blocked
See original GitHub issueOn Android 12, when app is killed or in background, tapping the notification does not open the app. Adb logcat shows : NotificationService: Indirect notification activity start (trampoline) from com.xxx.xxx blocked Turning off NOTIFICATION_TRAMPOLINE_BLOCK in App Compatibility Changes makes the app open after tapping the notification.
“react-native-notifications”: “^4.3.1” “react-native”: “0.68.2”
"dependencies": {
"@apollo/client": "^3.3.19",
"@datadog/mobile-react-native": "^1.0.0-rc9",
"@datadog/mobile-react-navigation": "^1.0.0-rc9",
"@formatjs/intl-datetimeformat": "^6.0.2",
"@formatjs/intl-getcanonicallocales": "^2.0.2",
"@formatjs/intl-locale": "^3.0.2",
"@formatjs/intl-numberformat": "^8.0.2",
"@formatjs/intl-pluralrules": "^5.0.2",
"@gorhom/bottom-sheet": "^4.2.2",
"@mapbox/polyline": "^1.1.1",
"@react-native-async-storage/async-storage": "^1.17.3",
"@react-native-community/blur": "^3.6.0",
"@react-native-community/clipboard": "^1.5.1",
"@react-native-community/datetimepicker": "^3.4.7",
"@react-native-community/geolocation": "^2.0.2",
"@react-native-community/masked-view": "^0.1.11",
"@react-native-community/progress-bar-android": "^1.0.4",
"@react-native-firebase/analytics": "11.5.0",
"@react-native-firebase/app": "11.5.0",
"@react-native-firebase/iid": "^11.5.0",
"@react-navigation/bottom-tabs": "^6.3.1",
"@react-navigation/elements": "^1.3.3",
"@react-navigation/material-top-tabs": "^6.2.1",
"@react-navigation/native": "^6.0.10",
"@react-navigation/stack": "^6.2.1",
"@rnhooks/keyboard": "^1.1.0",
"@sayem314/react-native-keep-awake": "^1.1.0",
"@stripe/stripe-react-native": "^0.12.0",
"card-validator": "^8.1.0",
"country-telephone-data": "^0.6.2",
"date-fns": "2.28.0",
"date-fns-tz": "1.3.4",
"detox": "19.6.0",
"email-validator": "^2.0.4",
"fluxible-js": "^6.0.8",
"graphql": "^15.5.0",
"i18n-js": "^3.8.0",
"libphonenumber-js": "^1.9.17",
"lodash": "^4.17.21",
"lodasync": "^1.0.7",
"lottie-ios": "3.2.3",
"lottie-react-native": "^5.0.1",
"password-validator": "^5.0.3",
"patch-package": "^6.4.7",
"paynowqr": "^1.1.2",
"postinstall-postinstall": "^2.1.0",
"qs": "^6.10.1",
"react": "17.0.2",
"react-airplay": "^1.1.2",
"react-countdown": "^2.3.2",
"react-dom": "^17.0.2",
"react-fluxible": "^6.0.4",
"react-interval-hook": "^1.1.3",
"react-native": "0.68.2",
"react-native-appstate-hook": "^1.0.5",
"react-native-avoid-softinput": "^2.4.4",
"react-native-background-fetch": "^4.1.0",
"react-native-background-geolocation": "^4.8.0",
"react-native-blob-util": "^0.13.16",
"react-native-calendars": "^1.1284.0",
"react-native-config": "^1.4.5",
"react-native-country-picker-modal": "^2.0.0",
"react-native-device-info": "^8.7.1",
"react-native-document-picker": "^6.0.4",
"react-native-fast-image": "^8.5.11",
"react-native-flags": "^1.0.0",
"react-native-gesture-handler": "^2.3.2",
"react-native-headphone-detection": "^1.3.0",
"react-native-hyperlink": "^0.0.19",
"react-native-image-crop-picker": "^0.37.3",
"react-native-image-pan-zoom": "^2.1.12",
"react-native-inappbrowser-reborn": "^3.6.3",
"react-native-keyboard-aware-scroll-view": "^0.9.5",
"react-native-loading-spinner-overlay": "^2.0.0",
"react-native-localize": "^2.1.5",
"react-native-maps": "^0.30.1",
"react-native-modal": "^11.10.0",
"react-native-modal-datetime-picker": "^9.2.3",
"react-native-notifications": "^4.3.1",
"react-native-pager-view": "^5.4.15",
"react-native-parsed-text": "^0.0.22",
"react-native-permissions": "^3.3.1",
"react-native-picker-scrollview": "^1.0.1",
"react-native-qrcode-svg": "^6.1.1",
"react-native-reanimated": "^2.8.0",
"react-native-safe-area-context": "^4.2.4",
"react-native-screens": "^3.13.1",
"react-native-snap-carousel": "^4.0.0-beta.6",
"react-native-svg": "^12.1.1",
"react-native-swipe-gestures": "^1.0.5",
"react-native-tab-view": "^3.1.1",
"react-native-toast-message": "^2.1.5",
"react-native-twilio-programmable-voice": "https://github.com/hoxfon/react-native-twilio-programmable-voice#feat/twilio-android-sdk-5",
"react-native-twilio-video-webrtc": "2.1.0",
"react-native-version-check": "^3.4.2",
"react-native-view-pdf": "^0.13.2",
"react-native-webview": "^11.18.2",
"react-navigation-backhandler": "^2.0.1",
"react-timer-hook": "^3.0.2",
"react-use-websocket": "^3.0.0",
"regex-escape": "^3.4.10",
"styled-components": "^5.3.5",
"timekeeper": "^2.2.0",
"timezone-mock": "^1.3.2",
"urijs": "^1.19.11",
"use-async-effect": "^2.2.3",
"yup": "^0.32.11"
},
build.gradle
import org.apache.tools.ant.taskdefs.condition.Os
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext {
googlePlayServicesLocationVersion = "17.0.0"
ndkVersion = "20.1.5948944"
googlePlayServicesVersion = "+" // default: "+"
firebaseMessagingVersion = "21.1.0"
buildToolsVersion = "31.0.0"
minSdkVersion = 21
compileSdkVersion = 31
targetSdkVersion = 31
androidXBrowser = "1.3.0"
kotlinVersion = '1.6.0'
appCompatVersion = "1.1.0"
if (System.properties['os.arch'] == "aarch64") {
// For M1 Users we need to use the NDK 24 which added support for aarch64
ndkVersion = "24.0.8215888"
} else {
// Otherwise we default to the side-by-side NDK version from AGP.
ndkVersion = "21.4.7075529"
}
}
repositories {
google()
mavenCentral()
jcenter()
}
dependencies {
classpath("com.android.tools.build:gradle:7.0.4")
classpath("com.facebook.react:react-native-gradle-plugin")
classpath("de.undercouch:gradle-download-task:4.1.2")
classpath 'com.google.gms:google-services:4.3.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url("$rootDir/../node_modules/react-native/android")
}
maven {
// Android JSC is installed from npm
url("$rootDir/../node_modules/jsc-android/dist")
}
mavenCentral {
// We don't want to fetch react-native from Maven Central as there are
// older versions over there.
content {
excludeGroup "com.facebook.react"
}
}
maven {
// Required for react-native-background-geolocation
url("${project(':react-native-background-geolocation').projectDir}/libs")
}
maven {
// Required for react-native-background-fetch
url("${project(':react-native-background-fetch').projectDir}/libs")
}
google()
jcenter()
maven { url 'https://www.jitpack.io' }
maven {
// All of Detox' artifacts are provided via the npm module
url "$rootDir/../node_modules/detox/Detox-android"
}
}
}
manifest `<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.xxx.xxx">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MICROPHONE" />
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
<uses-feature
android:name="android.hardware.microphone"
android:required="false" />
<application
android:name=".MainApplication"
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:screenOrientation="portrait"
android:theme="@style/AppTheme">
<meta-data android:name="com.transistorsoft.locationmanager.license" android:value="@string/TRANSISTORSOFT_GEOLOCATION_APIKEY" />
<!-- Twilio Voice -->
<!-- [START fcm_listener] -->
<service
android:name="com.hoxfon.react.RNTwilioVoice.fcm.VoiceFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<!-- [END fcm_listener] -->
<receiver
android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
android:protectionLevel="signature"
android:permission="com.google.android.c2dm.permission.SEND"
tools:replace="android:protectionLevel">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</receiver>
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:exported="false"
android:resource="@mipmap/ic_notification" />
<meta-data
android:name="com.google.android.geo.API_KEY"
android:exported="false"
android:value="@string/GOOGLE_API_KEY" />
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
<activity
android:name=".MainActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
android:label="@string/app_name"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustPan"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
</intent-filter>
</activity>
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>
</manifest>
`
Issue Analytics
- State:
- Created a year ago
- Comments:7
Top Results From Across the Web
Notification trampoline restrictions-Android12 - Droidcon
This app component is known as a notification trampoline. ... Indirect notification activity start (trampoline) from PACKAGE_NAME, \.
Read more >Android 12 and Notification Trampolines : r/androiddev - Reddit
I can create a PendingIntent to start the third-party app/activity, but it's not clear to me how to perform the other internal operations...
Read more >请升级Unipush的厂商SDK版本,兼容Android 12 - DCloud问答
E/NotificationService: Indirect notification activity start (trampoline) from com.xxx.xxx blocked。 查了Android文档,说是从Android 12开始, ...
Read more >您有一份安卓12适配攻略,请注意查收! - 个推
system_process E/NotificationService: Indirect notification activity start (trampoline) from com.gt.brand.push.tst1 blocked...system_process ...
Read more >What's New in Android 12 Developer Preview 1 - Droid Life
To keep notifications responsive, Android 12 will block notification trampolines by preventing them from launching their target Activities, ...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
The issue has been closed for inactivity.
Downgrading targetSdkVersion to 30, solves the issue, the notification is still flagged as indirect but is not blocked.