我的refreshservice
会发出一个通知
,当用户单击它时启动我的mainactivity
。
这看起来是这样的:
Log.d("Refresh", "RefreshService got: isNextWeek: " + String.valueOf(isNextWeek));
Intent notificationIntent = new Intent(this, MainActivity.class);
notificationIntent.putExtra(MainActivity.IS_NEXT_WEEK, isNextWeek);
Log.d("Refresh", "RefreshService put in Intent: isNextWeek: " + String.valueOf(notificationIntent.getBooleanExtra(MainActivity.IS_NEXT_WEEK,false)));
pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
builder = new NotificationCompat.Builder(this).setContentTitle("Title").setContentText("ContentText").setSmallIcon(R.drawable.ic_notification).setContentIntent(pendingIntent);
notification = builder.build();
// Hide the notification after its selected
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notificationManager.notify(NOTIFICATION_REFRESH, notification);
如您所见,notificationintent
应该具有boolean
额外的is_next_week
,其值为isnextweek
放在pendingintent
中。
当我单击“现在”这个通知
时,我总是得到false
作为是NextWeek
的值
这是我在mainactivity
中获取值的方式:
isNextWeek = getIntent().getBooleanExtra(IS_NEXT_WEEK, false);
日志:
08-04 00:19:32.500 13367-13367/de.MayerhoferSimon.Vertretungsplan D/Refresh: MainActivity sent: isNextWeek: true
08-04 00:19:32.510 13367-13573/de.MayerhoferSimon.Vertretungsplan D/Refresh: RefreshService got: isNextWeek: true
08-04 00:19:32.510 13367-13573/de.MayerhoferSimon.Vertretungsplan D/Refresh: RefreshService put in Intent: isNextWeek: true
08-04 00:19:41.990 13367-13367/de.MayerhoferSimon.Vertretungsplan D/Refresh: MainActivity.onCreate got: isNextWeek: false
Intent i = new Intent(this, MainActivity.class);
i.putExtra(IS_NEXT_WEEK, isNextWeek);
finish();
startActivity(i);
总是有false
值,我做错了什么?
这样就解决了问题:https://stackoverflow.com/a/18049676/2180161
报价:
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT);
http://developer.android.com/reference/android/app/pendingintent.html#flag_cancel_current
请参阅下面的答案,为什么使用pendingintent.flag_update_current
更好。
使用pendingintent.flag_cancel_current不是一个好的解决方案,因为内存的使用效率很低。而是使用PendingIntent.Flag_Update_Current。
同时使用intent.flag_activity_single_top(如果活动已经在历史堆栈的顶部运行,则不会启动该活动)。
Intent resultIntent = new Intent(this, FragmentPagerSupportActivity.class).
addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
resultIntent.putExtra(FragmentPagerSupportActivity.PAGE_NUMBER_KEY, pageNumber);
PendingIntent resultPendingIntent =
PendingIntent.getActivity(
this,
0,
resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
然后:
@Override
protected void onCreate(Bundle savedInstanceState) {
try {
super.onCreate(savedInstanceState);
int startPageNumber;
if ( savedInstanceState != null)
{
startPageNumber = savedInstanceState.getInt(PAGE_NUMBER_KEY);
//so on
@Override
protected void onNewIntent(Intent intent) {
int startPageNumber;
if (intent != null) {
startPageNumber = intent.getExtras().getInt(PAGE_NUMBER_KEY);
} else {
startPageNumber = 0;
}
}
我有一个PDF文件,我正试图通过Intent分享。行动!。不过当我点击其中一个选项(gmail、google drive等)时。上面写着“请求不包含数据”**更新代码如下 我想问题一定出在我的电脑上?这就是说,我的文件的URL肯定有效,因为我可以成功地使用该路径打印PDF。 编辑:我已经更新了我的代码一点点。 这让我从Whatsapp获得“文件格式不被接受”,从Gmail获得“无法附加文件”。 想
我试图将通知中的信息发送到调用的活动,而我的活动中的信息为NULL。 通知的代码为:
我正在尝试使用不同的应用程序附加图像,代码如下: 附加的图像是使用以下代码生成的: 但当我试图打开GMAIL与此意图,只有文本显示应用程序与错误:. 我错过了什么? 编辑 这是另一个解决方案:android。操作系统。FileUrieExposedException:文件。jpg通过ClipData曝光了app之外的内容。项目getUri()
我正在使用FCM进行消息推送,我正在将数据从通知发送到我正在打开的活动。 建筑通知规范: 在我的活动中,我得到了如下意图: 但问题是,每次Intent Extras在活动中为空时,我都检查了我在社区中找到的所有可能的原因,但每次响应都是相同的。 我试过下面提到的链接 Intent的额外值始终为空 Android通知PendingIntent Extras null 总是从通知意图android获取
当我将额外的内容传递给PendingIntent时,sendBroadcastRecencer永远不会接收到消息,因为从来没有调用过这个的方法。为什么会发生这种情况?
GET-Request标头: 重新搜索后报头