io.intercom.android.sdk.fcm.IntercomFcmMessengerService:瞄准S+(版本31及以上)需要在存在意图过滤器时定义android:exported的显式值
我知道我必须在清单中添加类似的东西,但仍然找不到它
<receiver android:name="" android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</receiver>
在Android 11及以下版本中,当在AndroidManifest
中声明Activity
,Service
或Broadcast
接收器时,您没有显式声明android:exported
。由于默认值是exported=true
,所以只有在不希望对外公开时才需要声明exported=false
。
例如:
<activity android:name="com.example.app.backgroundService">
<intent-filter>
<action android:name="com.example.app.START_BACKGROUND" />
</intent-filter>
</activity>
Android 12更改:将SDK API 31 (Android 12)设置为Android 12设备上的目标SDK的应用程序必须在组件中显式声明export,例如声明intent-filter的Activity。
例如,您必须显式声明exports如下:
<service android:name="com.example.app.backgroundService"
android:exported="false">
<intent-filter>
<action android:name="com.example.app.START_BACKGROUND" />
</intent-filter>
</service>
总之,android:exported="true"
或"android:exported="false"
必须添加到所有receivers
,services
和activity
标签中,其中包含意图过滤器。
注意:
你可以在应用程序的obj
文件夹中找到AndroidManifest.xml
.我的文件夹是MyAndroidProjectobjDebug120
.
找到文件AndroidManifest.xml
后,您可以重新检查是否已将标签android:exported
添加到所有receivers
,services
和activity
。