0

我正在使用下面提到的代码向用户展示添加日历事件屏幕。

例如,以下内容将提示用户是否应使用某些详细信息创建事件。

Intent intent = new Intent(Intent.ACTION_INSERT);
intent.setData(CalendarContract.Events.CONTENT_URI);
startActivity(intent);

这部分适用于 Android 4.0 及更高版本,但不适用于 android 2.3 ....?我希望这适用于 2.3 到 4.1 之间的所有 android 操作系统。

4

2 回答 2

0
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。

Main.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));
}
于 2012-12-12T07:53:15.807 回答
0

如果您以其他方式使用它,您也可以使用它:

mCursor = getContentResolver().query(
CalendarContract.Events.CONTENT_URI, COLS, null, null, null);

它是日历的 contentProvider 。

于 2012-12-12T07:19:42.380 回答