android通知点击打开,android – OneSignal推送通知点击打开活动

博主集成推送通知信号库后,想在应用未运行时点击通知打开特定活动,但点击时应用崩溃。给出错误消息后,介绍了解决方法,即构建构造函数并在Application类中传递上下文。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我已经集成了一个用于推送通知的信号库.我想在应用未运行时通过点击推送通知打开特定活动

我正在接收推送通知但是当我点击通知时,应用程序崩溃了.这是我的通知接收器代码

public class ExampleNotificationOpenedHandler implements OneSignal.NotificationOpenedHandler

{

Context context;

@Override

public void notificationOpened(OSNotificationOpenResult result) {

OSNotificationAction.ActionType actionType = result.action.type;

JSONObject data = result.notification.payload.additionalData;

String customKey;

if (data != null) {

customKey = data.optString("customkey", null);

if (customKey != null)

Log.e("OneSignalExample", "customkey set with value: " + customKey);

}

if (actionType == OSNotificationAction.ActionType.ActionTaken)

Log.i("OneSignalExample", "Button pressed with id: " + result.action.actionID);

Intent intent = new Intent(context, User_Detail.class);

intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);

context.startActivity(intent);

}

这是我的错误消息

Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference

解决方法:

我只是错过了在onReceivedMethod之前在类中构建构造函数

Context context2;

ExampleNotificationOpenedHandler(Context context) {

context2 = context;

}

@Override

public void notificationOpened(OSNotificationOpenResult result) {

OSNotificationAction.ActionType actionType = result.action.type;

JSONObject data = result.notification.payload.additionalData;

String customKey;

Intent intent = new Intent(context2,User_Detail.class);

intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);

context2.startActivity(intent);

if (data != null) {

customKey = data.optString("customkey", null);

if (customKey != null)

Log.e("OneSignalExample", "customkey set with value: " + customKey);

}

if (actionType == OSNotificationAction.ActionType.ActionTaken)

{

Log.i("OneSignalExample", "Button pressed with id: " + result.action.actionID);

}

并在Application类中传递上下文

@Override

public void onCreate() {

super.onCreate();

mInstance = this;

OneSignal.startInit(this)

.setNotificationOpenedHandler(new ExampleNotificationOpenedHandler(this))

.init();

}

标签:onesignal,android,push-notification

来源: https://codeday.me/bug/20190828/1753046.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值