返回

App从Android 12开始的重大变化:android:exported属性设置详解

Android

Android 12 的重大变化:深入了解 android:exported 属性的设置

Android 12 已成为现实,为移动应用开发带来了令人振奋的时代。随着它问世,我们踏入了更加注重安全、隐私和透明度的时代。Android 12 对应用开发方式带来了众多关键变化,其中之一就是对 android:exported 属性设置的要求。

什么是 android:exported 属性?

android:exported 属性是一个关键属性,存在于 AndroidManifest.xml 文件中,它决定了一个组件(活动、服务、广播接收器等)是否可以从应用外部访问。将此属性设置为 true,表示组件可以被外部应用访问;设置为 false,则表示组件只能在应用内部使用。

为什么 Android 12 要求设置 android:exported 属性?

在当今移动设备安全至关重要的时代,Android 12 加强了应用的隐私和安全保护措施。要求应用开发者明确设置 android:exported 属性,正是其中一项重要举措。这旨在规范组件行为,防止恶意软件攻击和数据泄露。

如何正确设置 android:exported 属性?

Android 12 中,android:exported 属性的默认值和设置要求因组件类型而异。活动(activity)的默认值为 true,允许从外部访问;服务(service)和广播接收器(broadcast receiver)的默认值为 false,表示它们只能在应用内使用。

要设置 android:exported 属性,请执行以下步骤:

  1. 打开 AndroidManifest.xml 文件。
  2. 找到要设置的组件。
  3. 在组件的标签中添加 android:exported 属性。
  4. 将属性值设置为 true 或 false,以指定组件的可访问性。

示例:

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

<service android:name=".MyService" android:exported="false" />

<receiver android:name=".MyReceiver" android:exported="true">
  <intent-filter>
    <action android:name="android.intent.action.MY_CUSTOM_ACTION" />
  </intent-filter>
</receiver>

结论

Android 12 对 android:exported 属性设置要求的改变,是应用开发者必须重视的一项重大变化。通过正确设置此属性,应用不仅可以满足 Android 12 的兼容性要求,还可以增强安全性,为用户提供更可靠的体验。

常见问题解答

  1. 为什么要将 android:exported 设置为 true 或 false?

    • 将其设置为 true 允许外部应用访问组件;将其设置为 false 仅限组件在应用内使用。
  2. Android 12 中不同组件类型的 android:exported 默认值是什么?

    • 活动:true;服务和广播接收器:false。
  3. 不设置 android:exported 属性会发生什么?

    • Android 12 将应用视为不兼容,可能无法正常运行。
  4. 如何检查组件是否可以被外部应用访问?

    • 查看组件的 AndroidManifest.xml 文件,查看 android:exported 属性的值。
  5. 将 android:exported 设置为 true 时需要考虑哪些安全隐患?

    • 外部应用可以访问组件,可能导致安全漏洞或数据泄露。