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

11 回复

你引入包的时候,改为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包中。

注意事项:

  1. 确保项目manifest.json中已配置使用AndroidX:
{
    "app-plus": {
        "usingComponents": true,
        "androidX": true
    }
}
回到顶部