【问题标题】:ActivityNotFoundException when testing on a device running 2.3在运行 2.3 的设备上测试时出现 ActivityNotFoundException
【发布时间】:2014-04-17 22:43:36
【问题描述】:

我已成功将事件添加到本机日历,并且适用于 Android API 级别 14 或更高版本。

我尝试了@VishalKhakhkhar 的代码,但我仍然无法解决这个问题?我收到错误消息:在运行 2.3.6 的设备上进行测试时,找不到处理 Intent { act=android.intent.action.EDIT typ=vnd.android.cursor.item/event 的活动

请参阅下面的更新代码,尝试解决此问题:-

    Button btnEvents = (Button) findViewById(R.id.button1);
    btnEvents.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            long startMillis = 0; 
            long endMillis = 0; 
            Calendar beginTime = Calendar.getInstance(); 
            beginTime.set(2014, 1, 16, 16, 0);  
            startMillis = beginTime.getTimeInMillis(); 
            Calendar endTime = Calendar.getInstance(); 
            endTime.set(2014, 1, 16, 22, 30);
            endMillis= endTime.getTimeInMillis();

            if (Build.VERSION.SDK_INT >= 14) {
                Intent intent = new Intent(Intent.ACTION_EDIT).setData(Events.CONTENT_URI)
                    .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, startMillis)
                    .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endMillis)
                    .putExtra(Events.TITLE, "Title")
                    .putExtra(Events.DESCRIPTION, "Description")
                    .putExtra(Events.EVENT_LOCATION, "Location")
                    .putExtra(Reminders.HAS_ALARM, true)
                    .putExtra(Reminders.METHOD, Reminders.METHOD_DEFAULT);
                    startActivity(intent);
            } else {
                Intent intent = new Intent(Intent.ACTION_EDIT);
                intent.setType("vnd.android.cursor.item/event");
                intent.putExtra("title", "Title");
                intent.putExtra("description", "Description");
                intent.putExtra("beginTime", startMillis);
                intent.putExtra("allDay", false);
                intent.putExtra("endTime", endTime.endMillis);
                intent.putExtra("eventLocation", "Location");
                intent.putExtra("hasAlarm", 1);
                startActivity(intent);
            }               
        }
    });     
}

【问题讨论】:

  • 你检查过this example ?
  • 它只是一个自定义日历,添加一些预定义的事件,它对我不起作用
  • 你有同样的解决方案吗.. ??我还必须在我的项目中实现它...
  • @Bhavna 没有仍在寻找答案...可能天使会来...每当我得到我的解决方案时,我都会肯定地告诉你,如果你能得到一些解决方案,请告诉我好的!

标签: android calendar


【解决方案1】:

如果您希望将事件直接添加到日历中,即不打开意图,您可以使用以下代码..,

    try
    {
    Calendar calendarStart = getCalendarFromISO(startDate);
    Calendar calendarEnd = getCalendarFromISO(endDate);

    Calendar cal = Calendar.getInstance();
     cal.setTimeZone(TimeZone.getTimeZone("GMT-1"));

      ContentResolver cr = this.getContentResolver();
      ContentValues values = new ContentValues();

      values.put(Events.DTSTART, calendarStart.getTimeInMillis());
      values.put(Events.DTEND, calendarEnd.getTimeInMillis());
      values.put(Events.TITLE, title);
 //       values.put(Events.DESCRIPTION, description);
      values.put(Events.CALENDAR_ID, 1);
//        values.put("rrule", "FREQ=DAILY");
//        values.put(Events.EVENT_LOCATION, location);
      values.put(Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());

// Provider for Calendar
if (android.os.Build.VERSION.SDK_INT <= 7) {

         eventsUri = Uri.parse("content://calendar/events");
     } else 
     {

         eventsUri = Uri.parse("content://com.android.calendar/events");
     }
      Uri uri = cr.insert(eventsUri, values);

//Returns the id for last added event
      eventID = Long.parseLong(uri.getLastPathSegment());
    Log.v("Calendar", "Calender Event Added" + eventID );

     } 
catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();

       }

//格式化日期的方法

 public static Calendar getCalendarFromISO(String dateString) {
    //dateString = dateString.trim().replaceAll(":00$", "00"); // Changing format for SimpleDateFormat

    Calendar calendar = Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault());
    SimpleDateFormat dateformat = new SimpleDateFormat(ISO8601DATEFORMAT, Locale.getDefault());

    try {
        Date date = dateformat.parse(dateString);
        calendar.setTime(date);
    } catch (ParseException e) {
        e.printStackTrace();
    }

    return calendar;
  }

【讨论】:

    【解决方案2】:

    试试这个

    if (Build.VERSION.SDK_INT >= 14) {
        Intent intent = new Intent(Intent.ACTION_EDIT).setData(Events.CONTENT_URI)
            .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis())
            .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis()).putExtra(Events.TITLE, eventname)
            .putExtra(Events.DESCRIPTION, strDesctription)
            .putExtra(Events.EVENT_LOCATION, eventLoc).putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY)
            .putExtra(Reminders.HAS_ALARM, true).putExtra(Reminders.METHOD, Reminders.METHOD_DEFAULT).putExtra(Reminders.DURATION, 45)
            .putExtra(Reminders.MINUTES, 60);
            mContext.startActivity(intent);
    } else {
        Intent intent = new Intent(Intent.ACTION_EDIT);
        intent.setType("vnd.android.cursor.item/event");
        intent.putExtra("title", eventname);
        intent.putExtra("description", strDesctription);
        intent.putExtra("beginTime", beginTime.getTimeInMillis());
        intent.putExtra("allDay", false);
        intent.putExtra("endTime", endTime.getTimeInMillis());
        intent.putExtra("eventLocation", eventLoc);
        intent.putExtra("hasAlarm", 1);
        mContext.startActivity(intent);
    }
    

    【讨论】:

    • 对于较低版本仍然没有解决,请参阅我更新的代码,使用您的 - 不幸的是应用程序已停止
    • 让我知道问题出在哪里……我可以进一步帮助您
    • 但在我的情况下它不起作用,得到:没有找到处理 Intent 的活动 { act=android.intent.action.EDIT typ=vnd.android.cursor.item/event
    【解决方案3】:

    你得到的事实

    未找到处理 Intent 的 Activity { act=android.intent.action.EDIT typ=vnd.android.cursor.item/event

    使用该特定设备意味着没有在其上注册的应用程序可以处理该意图。时期。

    您能做的最好的事情就是捕获异常并向用户显示一条消息,告诉用户无法在他/她的设备上处理该操作。

    您可以做的其他事情是建议安装一个可以处理它的应用程序,即日历类型的应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-19
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 2019-04-03
      相关资源
      最近更新 更多