我正在尝试通过通知和事件运行活动onCreate
我想“重定向”。为此添加对信息的思考Intent
班级。一个重要的特性是生成通知的类是通过服务执行的。我从中检索上下文getApplicationContext
类提供的方法android.app.Application
。每当我调用方法时getExtras()
正在返回null
。我究竟做错了什么?
public class OXAppUpdateHandler {
private void addNotification(Context context, int iconID,
CharSequence tickerText, CharSequence title, CharSequence content) {
CharSequence notificationTicket = tickerText;
CharSequence notificationTitle = title;
CharSequence notificationContent = content;
long when = System.currentTimeMillis();
Intent intent = new Intent(context, MainActivity_.class);
intent.setFlags(
Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra(OPEN_UPDATE_ACTIVITY_KEY, 1);
PendingIntent pendingIntent =
PendingIntent.getActivity(context, 0, intent, 0);
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(
Context.NOTIFICATION_SERVICE);
Notification notification =
new Notification(iconID, notificationTicket, when);
notification.setLatestEventInfo(context, notificationTitle,
notificationContent, pendingIntent);
notificationManager.notify(NOTIFICATION_ID, notification);
}
public static boolean isUpdateStart(Intent intent) {
Bundle bundle = intent.getExtras();
boolean result = bundle != null &&
bundle.containsKey(OPEN_UPDATE_ACTIVITY_KEY);
if (result) {
bundle.remove(OPEN_UPDATE_ACTIVITY_KEY);
}
return result;
}
}
@EActivity(R.layout.activity_main)
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (OXAppUpdateHandler.isUpdateStart(getIntent())) {
startActivity(new Intent(this, UpdateActivity_.class));
}
}
}
我将探出窗外,猜测你的问题就在这里:
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
你正在路过intent
to getActivity()
并期待您能回来PendingIntent
与您匹配的Intent
并包括您的额外费用。不幸的是,如果已经有一个PendingIntent
漂浮在与您匹配的系统中Intent
(without考虑到你的Intent
额外)然后getActivity()
会返回给你PendingIntent
反而。
要查看这是否是问题所在,请尝试以下操作:
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
这表示如果已经有一个PendingIntent
与您匹配的Intent
在系统中的某个地方,它应该用您的系统中的内容替换额外的内容intent
范围。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)