今天把flutter_blue_plus升级到1.8.0后发现获取定位权限时总是失败。查看日志发现permission_handler报了 No permissions found in manifest for: []5 的错误。
根据网上的方法试了flutter clean和flutter pub cache repair都没有用。实在找不到原因,只好把flutter_blue_plus回退到1.3.1,发现权限又正常了。
通过对比两个版本的源码的manifest文件,发现1.8.1版本的ACCESS_FINE_LOCATION上加了maxSdkVersion限制,我现在编译的sdk版本是33,合并后自然就把这个权限给去掉了。
1.3.1版本
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
1.8.0版本
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="30"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" android:maxSdkVersion="28" />
解决办法:在权限声明的地方加上tools:remove="android:maxSdkVersion"即可。
<uses-permission android:name="android.permission. ACCESS_FINE_LOCATION" tools:remove="android:maxSdkVersion"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:remove="android:maxSdkVersion"/>