android - 在 Android calendarView 小部件上显示谷歌日历?

标签 android google-calendar-api calendarview

我的问题很简单,有没有办法在应用程序中使用 Android calendarView 显示 Google 日历?我找不到这样做的方法

最佳答案

主.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=http://schemas.android.com/apk/res/android
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="Introducing ICS Calendar"
android:gravity="center"
 android:padding="10dip"/>
<TextView
android:id="@+id/data"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:gravity="center"
 android:padding="10dip"/>
<LinearLayout
android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:orientation="horizontal"
 android:gravity="center" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/previous"
 android:text="Prev"
 android:padding="10dip"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/next"
 android:text="Next"
 android:padding="10dip"/>
</LinearLayout>
</LinearLayout>

主.java

import java.text.Format;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.CalendarContract;
import android.text.format.DateFormat;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Main extends Activity implements OnClickListener{

private Cursor mCursor = null;
private static final String[] COLS = new String[]
{ CalendarContract.Events.TITLE, CalendarContract.Events.DTSTART};
}

现在我们需要重写 on create 方法。请特别注意我们如何填充数据库游标。这是我们需要之前定义的 COLS 常量的地方。您还会注意到,在初始化数据库游标并设置点击处理程序回调后,我们继续并手动调用点击处理程序。此快捷方式使我们能够最初填写我们的 UI,而无需重复代码。

主.java

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mCursor = getContentResolver().query(
CalendarContract.Events.CONTENT_URI, COLS, null, null, null);
mCursor.moveToFirst();
Button b = (Button)findViewById(R.id.next);
b.setOnClickListener(this);
b = (Button)findViewById(R.id.previous);
b.setOnClickListener(this);
onClick(findViewById(R.id.previous));
}

在我们的回调中,我们将光标操作到数据库中的正确条目并更新 UI。

@Override
public void onClick(View v) {
TextView tv = (TextView)findViewById(R.id.data);
String title = "N/A";
Long start = 0L;
switch(v.getId()) {
case R.id.next:
if(!mCursor.isLast()) mCursor.moveToNext();
break;
case R.id.previous:
if(!mCursor.isFirst()) mCursor.moveToPrevious();
break;
}
Format df = DateFormat.getDateFormat(this);
Format tf = DateFormat.getTimeFormat(this);
try {
title = mCursor.getString(0);
start = mCursor.getLong(1);
} catch (Exception e) {
//ignore
}
tv.setText(title+" on "+df.format(start)+" at "+tf.format(start));
}

权限:

<uses-permission android:name="android.permission.READ_CALENDAR"/>

关于android - 在 Android calendarView 小部件上显示谷歌日历?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11959592/

相关文章:

java - 无法构建发布 apk 版本

安卓键盘源

java - AudioTrack - IllegalStateException : play() called on uninitialized AudioTrack

javascript - 通过 WinForm 查看 Google 日历

Android - setFocusedMonthDateColor() 和 setUnfocusedMonthDateColor() 在 SDK 级别 23 中已弃用

android - 我的 Android 应用程序中的日期时间错误

python - 是否可以更新 Google 服务帐户的设置?

javascript - 是否可以在 Google Calendar API 中发送/插入事件数组

android - 如何更改 CalendarView 中的月份文本颜色

android - DatePicker 日历 View