其他分享
首页 > 其他分享> > android – OneSignal推送通知点击打开活动

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

作者:互联网

我已经集成了一个用于推送通知的信号库.我想在应用未运行时通过点击推送通知打开特定活动
我正在接收推送通知但是当我点击通知时,应用程序崩溃了.这是我的通知接收器代码

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