Android日历:onActivityResult的resultCode始终为0

我开发了一个Android应用程序,它提示日历应用程序编辑事件。

我使用startActivityForResult()打开日历。 编辑并保存事件后, resultCode onActivityResult() resultCode始终为0。

我看到许多与“onActivityResult resultCode总是返回0”相关的答案。 这是因为在第二个活动中没有使用setResult()finish()

但就我而言,我正在调用Android日历应用程序(不是自定义活动)。

提示Android日历的代码:

 Intent intent = new Intent(Intent.ACTION_EDIT); intent.setType("vnd.android.cursor.item/event"); //set the event details startActivityForResult(intent,1); 

在保存或取消日历时触发

 protected void onActivityResult(int requestCode, int resultCode, Intent data) { //resultCode always returns 0. switch(requestCode) { case 1: if (resultCode == Activity.RESULT_OK) { } } } 

无论我在日历应用程序中单击“保存”还是“取消”, resultCode始终为0。

另外我需要从日历intent中获取数据。但是onActivityResult中的intent“data”也返回null。

有谁能解释为什么会这样? 有没有办法知道用户是否点击“保存”或“取消”?

您可以检查新添加的日历事件的lastId,如果没有更改,则结果实际上是CANCELED,否则就可以了

 val projection = arrayOf(CalendarContract.Calendars._ID) cursor = contentResolver.query(CalendarContract.Events.CONTENT_URI, projection, null, null, null) if (cursor.moveToLast()) { val lastId = cursor.getLong(0) // compare lastId with a previous one, if not changed - result is CANCELLED }