Android12(SDK31)中exported的变化

  • Post author:
  • Post category:其他


之前Android11中exported就需要加在AndroidMainifest.xml中的Activity中,今天偶然看见高德地图升级了SDK31,把自己的项目也升级一波。


SDK31报错,SDK30正常运行,错误如下:

Installation did not succeed.

The application could not be installed: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

Installation failed due to: ‘null’

这咋整呢,看着是AndroidMainifest.xml这个有问题,网上搜了一波发现Android12对用户做了更加强的隐私保护,现在需要对Service和BroadCaseReceiver都添加exported。


代码示范如下:


Activity:

<activity
    android:name="com.ibptadb.activity.Main"
    android:exported="true"
    android:label="@string/app_name"
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>


Service:

<service
    android:name="org.ibptadb.androidpn.client.NotificationService"
    android:enabled="true"
    android:exported="true"
    android:label="NotificationService">
    <intent-filter>
        <action android:name="org.NotificationService" />
    </intent-filter>
</service>


BroadCaseReceiver:

<receiver android:name="com.DeletePicture"
    android:exported="true">
    <intent-filter>
        <action android:name="com.android.deletePicture" />
    </intent-filter>
</receiver>

加上之后,完美运行!



版权声明:本文为Motejia原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。