Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are present
在安卓12系统中调试应用程序时,应用程序被崩溃了。
Android 12要求你在你的主要活动中添加一段代码。
进入你的项目文件夹,打开AndroidManifest.xml文件。
在活动中添加以下代码
android:exported="true"
举例说明
android:exported="true"
是什么意思/作用?
- instanceof 2022-02-23
在 AndroidManifest.xml 中添加 android:exported="true":
android:exported="true"
的位置
- redsd 2022-01-30
感谢@rahul-kavati。
对于 Xamarin/MAUI,它是 ActivityAttribute
上的一个属性,像这样使用 [Activity(Label = "MsalActivity", Exported = true)]
在Android11及以下版本中,当在AndroidManifest中声明一个活动、服务或广播接收器时,你没有明确声明android:exported。因为默认值是exported=true,所以你只需要在不想向外界公开时声明exported=false。
Android 12的变化。在Android 12设备上将SDK API 31(android 12)设置为目标sdk的导出应用程序的明确声明必须在组件中明确声明导出,例如声明intent-filter的Activity。否则,会出现以下错误,安装失败。
你必须明确地声明导出,如下所示。
Intent-filter是向外界公开应用程序组件的方法之一。这是因为我的应用程序的组件可以通过对隐含意图的解析来执行。
另一方面,在很多情况下,它被用于只在我的应用程序内部执行具有隐含意图的组件,但由于没有设置导出,它被暴露在外部,这可能会影响隐含意图的解析。.
在Xamarin.Android中,我在BroadcastReceiver中也面临着同样的问题。
并且用同样的Exported=true解决了这个问题。
In AndroidManifest.xml
是的,在AndroidManifest.xml中。
如果您使用任何意图过滤器或服务,它必须具有android:export
属性
最快的方法是修改app/build.gradle
中的targetSdkVersion
,最大为30