Android 日历问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 日历问题相关的知识,希望对你有一定的参考价值。

android中如何通过点击一个button按钮触发选择日历的效果,并选择完日历后获得所选择的日子,最后把这个时间利用settext()方法赋值给这个button按钮?

button.setOnClickListener(new View.OnClickListener()

@Override
public void onClick(View v)
// TODO Auto-generated method stub
Calendar calendar=Calendar.getInstance();
DatePickerDialog dialog=new DatePickerDialog(getActivity(),
dateListener,
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
dialog.show();


);
/////////////////////////////////////////////////////////////////////////////////////////////////////
DatePickerDialog.OnDateSetListener dateListener=new OnDateSetListener()

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth)
// TODO Auto-generated method stub
button.setText(year+"-"+monthOfYear+"-"+dayOfMonth);


;
//监听一下选择器就行了
参考技术A 重下载就好了追问

能说清楚点吗?不太明白额

打开带有 html 链接的 android 日历

【中文标题】打开带有 html 链接的 android 日历【英文标题】:open android calendar with html link 【发布时间】:2013-06-17 01:32:15 【问题描述】:

我需要在我的 Android 设备上打开日历应用 使用一个简单的 html 链接。 我可以在 iOS 中使用 href=CALSHOW:// 安卓有类似的吗?

是否有任何解决方法?

提前致谢。

【问题讨论】:

你找到方法了吗? 【参考方案1】:

在 Android 上,有一种方法比 ios url 架构更强大。 Intents 而且真的真的更强大!

您可以使用 Intents 打开日历或添加日历事件(以及许多其他用途,例如打开 twitter、在 whatsapp 上分享图像、在 evernote 上创建笔记......)

在this link 你可以找到解决方案。请注意android Read this this post too

要添加日历事件,请遵循以下代码:(这是一个示例,可能您没有使用所有这些,或者您的日期格式可能不同)

/**
 * Creates a calendar event
 * 
 * @param ce calendar event information
 * @return
 */
protected static boolean createCalendarEvent(Context context, CalendarEventCustomObject ce) 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH)
        return createCalendarEventIceCream(context, ce);
    else
        return createCalendarEventNormal(context, ce);


@SuppressLint("SimpleDateFormat")
protected static boolean createCalendarEventNormal(Context context, CalendarEventCustomObject ce) 
    try 
        Intent calIntent = new Intent(Intent.ACTION_EDIT);
        calIntent.setType("vnd.android.cursor.item/event");

        calIntent.putExtra("title", ce.description);
        calIntent.putExtra("eventLocation", ce.location);
        calIntent.putExtra("description", ce.summary);
        calIntent.putExtra("calendar_id", ce.id);

        // Add date info
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
        SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mmZ");
        Long start = Utils.parseDate(ce.start, df);
        if (start == null) 
            start = Utils.parseDate(ce.start, df2);
            if (start == null)
                start = System.currentTimeMillis();
        
        Long end = Utils.parseDate(ce.end, df);
        if (end == null) 
            end = Utils.parseDate(ce.end, df2);
            if (end == null)
                end = System.currentTimeMillis();
        
        calIntent.putExtra("beginTime", start);
        calIntent.putExtra("endTime", end);

        context.startActivity(calIntent);
        return true;
     catch (Exception e) 
        return false;
    


@SuppressLint("NewApi")
protected static boolean createCalendarEventIceCream(Context context, CalendarEventCustomObject ce) 
    try 
        Intent calIntent = new Intent(Intent.ACTION_INSERT);
        calIntent.setType("vnd.android.cursor.item/event");

        // Create intent and add string info
        calIntent.putExtra(Events.TITLE, ce.description);
        calIntent.putExtra(Events.EVENT_LOCATION, ce.location);
        calIntent.putExtra(Events.DESCRIPTION, ce.summary);
        calIntent.putExtra(Events.CALENDAR_ID, ce.id);

        // add date info
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mmZ");
        SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
        Long start = Utils.parseDate(ce.start, df);
        if (start == null) 
            start = Utils.parseDate(ce.start, df2);
            if (start == null)
                start = System.currentTimeMillis();
        

        Long end = Utils.parseDate(ce.end, df);
        if (end == null) 
            end = Utils.parseDate(ce.end, df2);
            if (end == null)
                end = System.currentTimeMillis();
        
        calIntent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, start);
        calIntent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, end);

        calIntent.setData(CalendarContract.Events.CONTENT_URI);
        ((Activity) context).startActivity(calIntent);
        return true;
     catch (Exception e) 
        return false;
    
   

【讨论】:

谢谢你,但我不能写任何java代码......我正在使用一个我只能写html的环境。还是谢谢 编辑您的问题并输入该信息。是wep页面吗?还是它是 webView 中的网页?【参考方案2】:

我不知道 WebView 会支持这样的链接,但你自己处理这个链接很容易。我假设您正在 WebView 中加载 Web 内容 (html)。 在 html 中,您将拥有这种类型的链接:

<a href="CALSHOW://">Open calendar</a>

在 Java 代码中,您将覆盖该链接:

myWebView.setWebViewClient(new WebViewClient()
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) 
                if(url.startsWith("CALSHOW")) 
                    openCalendar();
                    return true;
                
                return super.shouldOverrideUrlLoading(view, url);
            
        );

以及打开日历的方法:

protected void openCalendar() 
        Intent calendarIntent = new Intent() ;
        /**
         * Set the time you need ...
         * */
        //calendarIntent.putExtra("beginTime", your_time);
        calendarIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        calendarIntent.setClassName("com.android.calendar","com.android.calendar.AgendaActivity");
        startActivity(calendarIntent);
    

这就是解决方法

【讨论】:

谢谢你,但我不能写任何java代码......我正在使用一个我只能写html的环境。还是谢谢 ... 那是因为您正在开发网页并且您没有在本机 WebView 中加载它?

以上是关于Android 日历问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 中添加日历事件?

android中怎么在日历中实现签到

android日历控件

Android 中的埃塞俄比亚日历

使用android自带的日历控件怎么标记

做一个android日历,从哪儿入手?