Android:exported组件的可见性和可访问性

移动开发 Android
从Android 12(API级别31)开始,系统开始更加严格地检查 android:exported​ 的值。如果系统检测到某个组件的 android:exported​ 值与其功能不符(例如,一个隐式Intent可以启动一个未声明为 exported=true​ 的Activity),或者绑定到一个未声明为exported的Service,那么应用可能会崩溃或在运行时遇到其他问题。

在Android开发中,android:exported 是一个用于定义组件(如Activity、Service、BroadcastReceiver、ContentProvider等)是否可以被其他应用访问的属性。在AndroidManifest.xml文件中,在<activity>, <service>, <receiver>, <provider>标签使用android:exported属性定义组件的可见性和可访问性。

<activity
    android:name=".activity.GuideActivity"
    android:exported="true"
    android:launchMode="singleTop">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

android:exported 为 true:

  • 组件可以被其他应用访问。
  • 其他应用可以启动这个Activity,发送广播到这个BroadcastReceiver,或者绑定到这个Service。
  • 对于某些组件(如Activity),如果没有明确设置 android:exported,那么默认值可能是 true,具体取决于Android版本和组件类型。

android:exported 为 false:

  • 组件只能被定义该组件的应用访问。
  • 其他应用无法直接访问这个组件。
  • 提高了安全性,减少了潜在的攻击面。

从Android 12(API级别31)开始,系统开始更加严格地检查 android:exported 的值。如果系统检测到某个组件的 android:exported 值与其功能不符(例如,一个隐式Intent可以启动一个未声明为 exported=true 的Activity),或者绑定到一个未声明为exported的Service,那么应用可能会崩溃或在运行时遇到其他问题。为了确保应用的稳定性和安全性,应该明确设置 android:exported 的值,并确保与组件的实际用途相匹配。

责任编辑:武晓燕 来源: 沐雨花飞蝶
相关推荐

2023-05-17 08:52:56

Java原子性可见性

2009-07-14 12:58:49

AWT和Swing

2021-01-12 07:39:48

线程线程安全

2021-05-16 17:14:30

线程安全性

2024-02-27 17:46:25

并发程序CPU

2019-11-12 08:46:42

网络数据包欺骗网络攻击

2020-08-25 09:51:40

Android 11开发者软件

2021-05-06 19:20:05

Java内存模型

2020-07-14 10:59:39

云计算云安全技术

2020-02-28 14:48:51

结构系统程序

2016-11-11 00:39:59

Java可见性机制

2021-09-01 10:50:25

云计算云计算环境云应用

2024-01-31 09:46:37

2024-10-14 14:49:59

2023-04-06 15:47:23

2018-05-26 16:01:37

2020-07-20 10:40:31

云计算云平台IT

2018-07-19 14:34:48

数据中心监控网络

2011-11-29 13:09:02

2021-12-14 10:24:44

可见性网络安全零信任
点赞
收藏

51CTO技术栈公众号