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
    }
  }
}
回到顶部