Kru*_*ati 3 android push-notification 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);
}
Run Code Online (Sandbox Code Playgroud)
这是我的错误信息
Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
Run Code Online (Sandbox Code Playgroud)
我只是想在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);
}
Run Code Online (Sandbox Code Playgroud)
并在Application类中传递上下文
@Override
public void onCreate() {
super.onCreate();
mInstance = this;
OneSignal.startInit(this)
.setNotificationOpenedHandler(new ExampleNotificationOpenedHandler(this))
.init();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5097 次 |
| 最近记录: |