uni-app 更新到3.2.9后无法引入安卓NotificationManagerCompat包
uni-app 更新到3.2.9后无法引入安卓NotificationManagerCompat包
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win10 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:win10
HBuilderX类型:正式
HBuilderX版本号:3.2.9
手机系统:Android
手机系统版本号:Android 11
手机厂商:华为
手机机型:华为p30pro
页面类型:nvue
打包方式:云端
示例代码:
// 通知权限判断 开启返回 true 否则 返回false
function isOpenNotifications(){
if(uni.getSystemInfoSync().platform == 'ios'){
// IOS
const UIApplication = plus.ios.import("UIApplication");
const app = UIApplication.sharedApplication();
let enabledTypes = 0;
if (app.currentUserNotificationSettings) {
var settings = app.currentUserNotificationSettings();
enabledTypes = settings.plusGetAttribute("types");
} else {
//针对低版本ios系统
enabledTypes = app.enabledRemoteNotificationTypes();
}
plus.ios.deleteObject(app);
return enabledTypes != 0
}
//安卓
const main = plus.android.runtimeMainActivity();
const pkName = main.getPackageName();
// 此处无法引入 导致后续代码报错
const NotificationManagerCompat = plus.android.importClass("android.support.v4.app.NotificationManagerCompat");
const packageNames = NotificationManagerCompat.from(main);
return !!packageNames.areNotificationsEnabled()
}
操作步骤:
const main = plus.android.runtimeMainActivity();
const pkName = main.getPackageName();
// 此处无法引入 导致后续代码报错
const NotificationManagerCompat = plus.android.importClass("android.support.v4.app.NotificationManagerCompat");
const packageNames = NotificationManagerCompat.from(main);
更多关于uni-app 更新到3.2.9后无法引入安卓NotificationManagerCompat包的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你引入包的时候,改为androidx.core.app.NotificationManagerCompat;
hbuilderx上次更新有提示,我也遇到这个问题,最后官方技术帮我解决的,改成上面这段引入报名的代码就搞定了。
更多关于uni-app 更新到3.2.9后无法引入安卓NotificationManagerCompat包的实战教程也可以访问 https://www.itying.com/category-93-b0.html
感谢 确实可以
同样遇到了
改为androidx.core.app.NotificationManagerCompat
就可以了
确实是改为androidx.core.app.NotificationManagerCompat就可以了,这个错报的莫名其妙,我的APP控制台报的错是:
19:05:49.114 如手机上自定义基座App未启动,请手动启动…
19:05:49.699 Uncaught SyntaxError: Unexpected identifier at client_index.html:1
害我一直在查client_index.html的问题。
var main = plus.android.runtimeMainActivity(); var NotificationManagerCompat = plus.android.importClass(“androidx.core.app.NotificationManagerCompat”); var packageNames = NotificationManagerCompat.from(main); 结果 packageNames 是个null 无法后续判断是为什么
回复 7***@qq.com: - -是因为测试安卓机的版本太老导致的,新一点的安卓系统是没问题的
小米k40 安卓12,使用androidx.core.app.NotificationManagerCompat,还是报null,只有我这样么?
我也遇到了
我也遇到了
解决了嘛
问题出在导入的类路径上。在AndroidX架构下,android.support.v4.app.NotificationManagerCompat 已废弃,应使用新的AndroidX路径。
解决方案:
将导入的类路径修改为:
const NotificationManagerCompat = plus.android.importClass("androidx.core.app.NotificationManagerCompat");
修改后的完整代码示例:
function isOpenNotifications(){
if(uni.getSystemInfoSync().platform == 'ios'){
// iOS代码保持不变
const UIApplication = plus.ios.import("UIApplication");
const app = UIApplication.sharedApplication();
let enabledTypes = 0;
if (app.currentUserNotificationSettings) {
var settings = app.currentUserNotificationSettings();
enabledTypes = settings.plusGetAttribute("types");
} else {
enabledTypes = app.enabledRemoteNotificationTypes();
}
plus.ios.deleteObject(app);
return enabledTypes != 0;
}
// Android代码修改
const main = plus.android.runtimeMainActivity();
// 使用AndroidX路径
const NotificationManagerCompat = plus.android.importClass("androidx.core.app.NotificationManagerCompat");
const notificationManager = NotificationManagerCompat.from(main);
return notificationManager.areNotificationsEnabled();
}
原因说明:
从uni-app 3.2.9开始,默认使用AndroidX架构,废弃了旧的support库。android.support.v4包中的类已迁移到androidx.core包中。
注意事项:
- 确保项目manifest.json中已配置使用AndroidX:
{
"app-plus": {
"usingComponents": true,
"androidX": true
}
}

