uni-app 更新HBuilderX以后,调用H5+的通知权限查询出错
uni-app 更新HBuilderX以后,调用H5+的通知权限查询出错
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | 11.6 | HBuilderX |
产品分类:
uniapp/App
PC开发环境操作系统:
Mac
HBuilderX类型:
正式
HBuilderX版本号:
3.2.9
手机系统:
Android
手机系统版本号:
Android 9.0
手机厂商:
模拟器
手机机型:
模拟器
页面类型:
vue
打包方式:
云端
bug描述:
使用h5+获取是否有通知权限,之前都是好好的,更新版本以后就走不通了
示例代码:
var main = plus.android.runtimeMainActivity();
var pkName = main.getPackageName();
var uid = main.getApplicationInfo().plusGetAttribute("uid");
var NotificationManagerCompat = plus.android.importClass("android.support.v4.app.NotificationManagerCompat");
var areNotificationsEnabled = NotificationManagerCompat.from(main).areNotificationsEnabled(); // 这句走不通
操作步骤:
调用这一句就会不通了,也不报错
var areNotificationsEnabled = NotificationManagerCompat.from(main).areNotificationsEnabled();
更多关于uni-app 更新HBuilderX以后,调用H5+的通知权限查询出错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app 更新HBuilderX以后,调用H5+的通知权限查询出错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
问题出在Android支持库的引用上。在HBuilderX 3.2.9版本中,Android支持库的包名发生了变化。
解决方案:
将代码中的 android.support.v4.app.NotificationManagerCompat 替换为 androidx.core.app.NotificationManagerCompat。
修改后的代码:
var main = plus.android.runtimeMainActivity();
var pkName = main.getPackageName();
var uid = main.getApplicationInfo().plusGetAttribute("uid");
var NotificationManagerCompat = plus.android.importClass("androidx.core.app.NotificationManagerCompat");
var areNotificationsEnabled = NotificationManagerCompat.from(main).areNotificationsEnabled();
原因说明: Android官方已将旧的support库迁移到AndroidX,新版本的HBuilderX默认使用AndroidX架构。NotificationManagerCompat类现在位于androidx.core.app包下。
如果项目仍需使用旧版support库,可在manifest.json中配置:
{
"app-plus": {
"android": {
"usingAndroidX": false,
"usingMaterialComponents": false
}
}
}

