请求确认Android 15 Safer Intents中目标Intent过滤器匹配规则
关于Android 15 Safer Intents「匹配目标intent-filters」规则的理解确认
你的理解完全正确。
Android 15推出的Safer Intents安全策略中,「匹配目标intent-filters」规则明确要求:针对特定组件的显式Intent必须精确匹配该组件声明的intent-filter规范,哪怕是启动同一应用内的组件也需要遵守这一要求。
以你给出的Manifest声明为例:
<activity android:name="ShareActivity" android:exported="false"> <intent-filter> <action android:name="android.intent.action.SEND"/> <data android:mimeType="text/plain"/> </intent-filter> </activity>
原来仅设置data的显式调用方式:
Intent(context, ShareActivity::class.java).apply { setData(...) }
由于缺少intent-filter中要求的ACTION_SEND动作,在Android 15上会失效;而补充了action的调用方式:
Intent(context, ShareActivity::class.java).apply { setAction(Intent.ACTION_SEND) setData(...) }
完全匹配了组件声明的intent-filter规则,因此可以正常启动目标Activity。
此外,该规则会覆盖intent-filter的所有属性匹配要求——如果组件的intent-filter中还声明了category、data的其他限定项(如scheme、host等),即使是显式调用该组件,你的Intent也必须包含对应的匹配内容,不能遗漏任何intent-filter中定义的规则。
内容的提问来源于stack exchange,提问作者sweak
相关产品推荐
相关产品推荐

