我开发了一个Android应用程序,提示日历应用程序编辑事件。
我使用startActivityForResult()
打开日历。编辑并保存事件后,resultCode
内的onActivityResult()
始终为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中也返回null。
有人能解释为什么会这样吗?有没有办法知道用户是否点击了" Save"或"取消"?
答案 0 :(得分:1)
您可以检查新添加的日历事件的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
}