配置flutter_health_connect时Android Manifest报错:找不到health_permissions数组
解决flutter_health_connect(^1.2.3)配置中的AndroidManifest报错问题
报错原因
你遇到的resource array/health_permissions not found错误,根源有两个:
- 错误重复了
<activity>标签,未将需要的代码插入已存在的.MainActivity节点内 - 未在Android资源文件中定义
health_permissions数组,导致Manifest中的meta-data找不到对应资源
1. 正确修改AndroidManifest.xml
不需要新增<activity>标签,直接将指定的meta-data和intent-filter插入现有.MainActivity内部,放在已有meta-data和intent-filter之后即可。修改后的完整Manifest代码如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <application android:label="asking" android:name="${applicationName}" android:icon="@mipmap/ic_launcher"> <activity android:name=".MainActivity" android:exported="true" android:launchMode="singleTop" android:taskAffinity="" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize"> <meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/NormalTheme" /> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> <!-- 新增的health_permissions元数据 --> <meta-data android:name="health_permissions" android:resource="@array/health_permissions" /> <!-- 新增的权限说明意图过滤器 --> <intent-filter> <action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE" /> </intent-filter> </activity> <meta-data android:name="flutterEmbedding" android:value="2" /> </application> <queries> <package android:name="com.google.android.apps.healthdata" /> <intent> <action android:name="android.intent.action.PROCESS_TEXT"/> <data android:mimeType="text/plain"/> </intent> </queries> <uses-permission android:name="android.permission.health.READ_ACTIVE_CALORIES_BURNED"/> <uses-permission android:name="android.permission.health.WRITE_ACTIVE_CALORIES_BURNED"/> </manifest>
2. 创建权限数组资源文件
在android/app/src/main/res/values/目录下创建arrays.xml文件(若已存在则直接编辑),添加health_permissions数组,填入你需要的Health Connect权限:
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="health_permissions"> <item>android.permission.health.READ_ACTIVE_CALORIES_BURNED</item> <item>android.permission.health.WRITE_ACTIVE_CALORIES_BURNED</item> <!-- 如需其他权限,在此继续添加即可 --> </string-array> </resources>
完成以上两步后,重新编译项目即可解决报错。
内容的提问来源于stack exchange,提问作者Esteban G. Gutierrez
相关产品推荐
相关产品推荐

