1

我有一个带按钮的主屏幕小部件。这是添加到按钮的操作:

Intent editContact = new Intent(Intent.ACTION_EDIT, ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long.valueOf(contactID)));

editContact.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY|Intent.FLAG_ACTIVITY_NEW_TASK);

PendingIntent pendingEditContact = PendingIntent.getActivity(rcvContext, appWidgetID, editContact, PendingIntent.FLAG_UPDATE_CURRENT);

每当通过编辑联系人或按后退键而不进行编辑而留下用于编辑联系人的内部 android 活动时,一切正常,并且该活动从堆栈中删除。从另一个小部件重新启动活动会正确显示要编辑的相应联系人数据。

如果联系人未被编辑并通过按Android 设备的 Home 按钮离开,则从另一个小部件重新启动不同的联系人会再次替换以前的联系人数据。不幸的是,这仅发生在第二次发射中。任何大于 2 的尝试(即再次按下 Home 按钮而不编辑联系人)都会导致 Activity 持有之前要编辑的联系人数据。显然,挂起的意图被缓存了。这就是为什么PendingIntent.FLAG_UPDATE_CURRENT应该更新意图编辑哪个联系人但无济于事:-(

我也有以下几点:

待定意向:

PendingIntent.FLAG_CANCEL_CURRENT;

活动:

editContact.putExtra("random", System.currentTimeMillis());

我想听听你关于解决这个问题的建议。非常感谢各位!

4

0 回答 0