2015-11-13 75 views
0

我有一个CalendarView。当按下一个日期,应用程序打开了该设备的具体日期的日历被点击:CalendarView到设备日历链接

 calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() { 
     @Override 
     public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) { 
      cal = Calendar.getInstance(); 

      cal.set(year,month,dayOfMonth); 

      long epochMillis = cal.getTimeInMillis(); 

      Uri.Builder uriBuilder = CalendarContract.CONTENT_URI.buildUpon(); 
      uriBuilder.appendPath("time"); 
      ContentUris.appendId(uriBuilder, epochMillis); 
      Uri uri = uriBuilder.build(); 

      Intent i = new Intent(Intent.ACTION_VIEW); 
      i.setData(uri); 
      startActivity(i); 

     } 
    }); 

这工作得很好。我的问题是,有没有办法让用户进入“创建事件屏幕”,而不是它现在带给我的位置,这是整个月的所选日期突出显示的视图?我希望他们能够点击我的CalendarView中的日期,并将其带到设备日历上的屏幕上,以便他们将约会添加到所选日期。想知道是否有人知道该屏幕的uri是什么?谢谢。

回答

0

我终于明白了。两件事情。

  1. 我正在追加“时间”到我的URI。这将简单地打开日历,直到我在启动意图时指定的特定时间。为了打开特定日期的事件屏幕,我需要追加“事件”。

  2. 当我创建intent时,我使用了ACTION_VIEW。相反,我需要ACTION_INSERT。

    calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() { 
    @Override 
    public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) { 
        cal = Calendar.getInstance(); 
    
        cal.set(year,month,dayOfMonth); 
    
        long epochMillis = cal.getTimeInMillis(); 
    
        Uri.Builder uriBuilder = CalendarContract.CONTENT_URI.buildUpon(); 
        uriBuilder.appendPath("events"); 
    
        Uri uri = uriBuilder.build(); 
    
        Intent i = new Intent(Intent.ACTION_INSERT); 
        i.setData(uri); 
        i.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, epochMillis); 
        startActivity(i); 
    
    }}); 
    
:我然后使用我的新的URI,其中包括“事件”,然后指定一个开始时间,这是我想要的特定日期设定的意图的数据