You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio集成OneSignal时r.getData()类型不匹配问题求解

解决OneSignal requestPermission回调中getData()类型不匹配问题

问题出在r.getData()返回的是Object类型,直接用于if条件判断时会触发类型不兼容错误——Java/Kotlin无法直接将Object当作boolean使用。

解决方案

Java 代码修复

将r.getData()显式转换为Boolean类型,同时增加空值判断避免空指针异常:

OneSignal.getNotifications().requestPermission(Continue.with(r -> {
    if (r.isSuccess()) {
        Boolean permissionGranted = (Boolean) r.getData();
        if (permissionGranted != null && permissionGranted) {
            // `requestPermission`成功,用户已接受权限
        } else {
            // `requestPermission`成功,但用户拒绝了权限
        }
    } else {
        // `requestPermission`失败,通过`r.getThrowable()`查看失败原因
    }
}));

Kotlin 代码修复

利用Kotlin的智能转换,将返回值转为Boolean?后再判断:

OneSignal.getNotifications().requestPermission(Continue.with { r ->
    if (r.isSuccess) {
        val permissionGranted = r.data as Boolean?
        if (permissionGranted == true) {
            // `requestPermission`成功,用户已接受权限
        } else {
            // `requestPermission`成功,但用户拒绝了权限
        }
    } else {
        // `requestPermission`失败,通过`r.throwable`查看失败原因
    }
})

补充说明

OneSignal的Continue回调设计为通用型,getData()返回Object以适配不同接口的返回数据,但requestPermission接口的成功回调确实会返回Boolean类型,因此显式类型转换是安全的。

内容的提问来源于stack exchange,提问作者Rohit Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 05:10:11