我有一个问题。
我正在使用Android日历(只是XML图形编辑器中的默认日历)。我希望能够添加事件,但Eclipse一直在唠叨我需要与帐户同步。然而,一旦我创建(并同步!)这个帐户(只是我的个人帐户),它仍然无法正常工作。我做了一些研究,但无法在网上找到答案/解决方案。我遵循了几个日历教程,但这种情况不断出现。
我的问题是:是否可以在不使用Google帐户的情况下在日历中创建活动?最终我甚至想尽可能自动生成事件,但是现在只需通过点击按钮添加一个事件就会让我非常高兴!
我的XML文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.deitel.welcome.CalendarActivity" >
<CalendarView
android:id="@+id/calendarView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/button1"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
<Button
android:id="@+id/btn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:text="Add Event" />
</RelativeLayout>
我的Java代码:
package com.deitel.welcome;
import java.util.Calendar;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.CalendarContract.Calendars;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class CalendarActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calendar);
Button button = (Button) findViewById(R.id.btn1);
button.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
//add event to calendar
addCalendarEvent();
}
});
}
public void addCalendarEvent(){
Calendar cal = Calendar.getInstance();
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
intent.putExtra("beginTime", cal.getTimeInMillis());
intent.putExtra("allDay", true);
intent.putExtra("rrule", "FREQ=YEARLY");
intent.putExtra("endTime", cal.getTimeInMillis()+60*60*1000);
intent.putExtra("title", "Test Event");
intent.putExtra("description", "This is a sample description");
startActivity(intent);
}
我还在Manifest中添加了用户可以通过添加以下两行来写入和读取事件的权限:
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
所以请...有人知道是否
1)可以将事件添加到日历而无需同步Google帐户吗? 2)我如何在我的代码中实现它?
非常感谢你阅读并花时间回答!
答案 0 :(得分:0)
您的问题不在于您使用CalendarView,而在于您用于添加事件的意图。该意图专门用于向Android日历添加事件,该日历由Google帐户支持。此外,您添加的权限用于访问设备日历。
是的,如果您的应用是本地数据,则可以创建自己的日历,但这并不容易。您必须创建用于添加和显示事件的布局,以及将数据保存在文件或某个数据库中