package com.huawei.calendar.calendardemo.activity;
import android.Manifest;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.CalendarContract;
import android.provider.CalendarContract.Events;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import com.huawei.calendar.calendardemo.R;
import com.huawei.calendar.calendardemo.adapter.CalendarAdapter;
import com.huawei.calendar.calendardemo.bean.CalendarEvent;
import com.huawei.calendar.calendardemo.util.MyTimeUtils;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.TimeZone;
public class CalcActivity extends AppCompatActivity implements View.OnClickListener {
private Button btn_insert_calendar;
private Button btn_delete_calendar;
private Button btn_update_calendar;
private Button btn_select_calendar;
private String TAG = "CalcActivity-->";
private List<CalendarEvent> calendarEvents = new ArrayList<>();
private static String CALANDER_EVENT_URL = "";// 为了兼容不同版本的日历,2.2以后url发生改变
private static String CALANDER_URL = "";
private static String CALANDER_REMIDER_URL = "";
private ListView lv_calendar;
private CalendarAdapter adapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_insert_calendar);
initView();
initData();
initEvent();
}
private void initView() {
btn_insert_calendar = findViewById(R.id.btn_insert_calendar);
btn_delete_calendar = findViewById(R.id.btn_delete_calendar);
btn_update_calendar = findViewById(R.id.btn_update_calendar);
btn_select_calendar = findViewById(R.id.btn_select_calendar);
lv_calendar = findViewById(R.id.lv_calendar);
}
private void initData() {
initUrl();
adapter = new CalendarAdapter(this, calendarEvents);
lv_calendar.setAdapter(adapter);
}
private void initEvent() {
btn_insert_calendar.setOnClickListener(this);
btn_delete_calendar.setOnClickListener(this);
btn_update_calendar.setOnClickListener(this);
btn_select_calendar.setOnClickListener(this);
}
private void initUrl() {
if (Integer.parseInt(Build.VERSION.SDK) >= 8) {
CALANDER_URL = "content://com.android.calendar/calendars";
CALANDER_EVENT_URL = "content://com.android.calendar/events";
CALANDER_REMIDER_URL = "content://com.android.calendar/reminders";
} else {
CALANDER_URL = "content://calendar/calendars";
CALANDER_EVENT_URL = "content://calendar/events";
CALANDER_REMIDER_URL = "content://calendar/reminders";
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_insert_calendar:
addCalender();
break;
case R.id.btn_delete_calendar:
showDeleteDialog();
break;
case R.id.btn_update_calendar:
showUpdateDialog();
break;
case R.id.btn_select_calendar:
calendarEvents.clear();
selectCalender();
break;
default:
break;
}
}
private void showDeleteDialog() {
// 创建一个EditText对象
final View view = View.inflate(this, R.layout.dialog_delete_calendar, null);
final EditText et_id = view.findViewById(R.id.et_id);
// 创建对话框对象
new AlertDialog.Builder(this).
// 添加输入的文本框
setView(view).
// 添加确定按钮
setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 获取输入的字符
String in = et_id.getText().toString();
if (in == null || "".equals(in)) {
Toast.makeText(CalcActivity.this, "输入内容不能为空!", Toast.LENGTH_SHORT).show();
return;
}
int id = Integer.parseInt(in);
deleteCalender(id);
}
}).setNegativeButton("取消", null).
// 产生并显示
create().show();
}
private void selectCalender() {
ContentResolver cr = getContentResolver();
// 日历里面相应的Event的URI
Uri uri = Uri.parse(CALANDER_EVENT_URL);
Cursor cursor = cr.query(uri, null, null, null, null);
while (cursor.moveToNext()) {
CalendarEvent cde = new CalendarEvent();
//事件的ID
String id = cursor.getString(cursor.getColumnIndex("_id")); //Events.CALENDAR_ID
//事件的标题
String title = cursor.getString(cursor.getColumnIndex(Events.TITLE));
//事件的起始时间
String dtstart = cursor.getString(cursor.getColumnIndex(Events.DTSTART));
//事件的结束时间 ,如果事件是每天/周,那么就没有结束时间
String dtend = cursor.getString(cursor.getColumnIndex(Events.DTEND));
//事件的描述
String description = cursor.getString(cursor.getColumnIndex(Events.DESCRIPTION));
//事件的重复规律
String rrule = cursor.getString(cursor.getColumnIndex(Events.RRULE));
//事件的复发日期。通常RDATE要联合RRULE一起使用来定义一个重复发生的事件的合集。
String rdate = cursor.getString(cursor.getColumnIndex(Events.RDATE));
//事件是否是全天的
String allDay = cursor.getString(cursor.getColumnIndex(Events.ALL_DAY));
//事件的地点
String location = cursor.getString(cursor.getColumnIndex(Events.EVENT_LOCATION));
//事件持续时间,例如“PT1H”表示事件持续1小时的状态, “P2W”指明2周的持续时间。P3600S表示3600秒
String duration = cursor.getString(cursor.getColumnIndex(Events.DURATION));
//other
String last_date = cursor.getString(cursor.getColumnIndex(Events.LAST_DATE));
String original_id = cursor.getString(cursor.getColumnIndex(Events.ORIGINAL_ID));
String maxReminders = cursor.getString(cursor.getColumnIndex(Events.MAX_REMINDERS));
String allowedReminders = cursor.getString(cursor.getColumnIndex(Events.ALLOWED_REMINDERS));
String startTime = MyTimeUtils.getTimeString(Long.parseLong(dtstart), "yyyy-MM-dd HH:mm:ss");
String endTime = "";
if (dtend != null && !dtend.equals("null") && !dtend.equals("")) {
endTime = MyTimeUtils.getTimeString(Long.parseLong(dtend), "yyyy-MM-dd HH:mm:ss");
}
String ruleString = "";
if (rrule != null && !rrule.equals("null") && !rr
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
CalendarDemo.zip (78个子文件)
CalendarDemo
gradlew.bat 2KB
gradlew 5KB
CalendarDemo.iml 866B
app
proguard-rules.pro 772B
src
test
java
com
huawei
calendar
calendardemo
ExampleUnitTest.java 426B
androidTest
java
com
huawei
calendar
calendardemo
ExampleInstrumentedTest.java 791B
main
res
mipmap-xxxhdpi
ic_launcher.png 9KB
ic_launcher_round.png 15KB
drawable
ic_launcher_background.xml 6KB
mipmap-hdpi
ic_launcher.png 3KB
ic_launcher_round.png 5KB
drawable-v24
ic_launcher_foreground.xml 2KB
values
colors.xml 214B
strings.xml 78B
styles.xml 394B
mipmap-xxhdpi
ic_launcher.png 6KB
ic_launcher_round.png 10KB
mipmap-mdpi
ic_launcher.png 2KB
ic_launcher_round.png 3KB
mipmap-xhdpi
ic_launcher.png 4KB
ic_launcher_round.png 7KB
mipmap-anydpi-v26
ic_launcher_round.xml 276B
ic_launcher.xml 276B
layout
item_calendar.xml 2KB
activity_main.xml 1002B
activity_insert_calendar.xml 1KB
dialog_update_calendar.xml 2KB
dialog_delete_calendar.xml 1KB
java
com
huawei
calendar
calendardemo
bean
CalendarEvent.java 4KB
activity
CalcActivity.java 16KB
MainActivity.java 9KB
adapter
ListItemAdapter.java 2KB
CalendarAdapter.java 3KB
util
PermissionsUtils.java 6KB
MyTimeUtils.java 4KB
AndroidManifest.xml 1KB
app.iml 11KB
.gitignore 8B
build.gradle 965B
libs
gradle
wrapper
gradle-wrapper.jar 52KB
gradle-wrapper.properties 236B
.idea
gradle.xml 626B
runConfigurations.xml 564B
misc.xml 2KB
modules.xml 361B
workspace.xml 187KB
libraries
android_arch_lifecycle_common_1_0_0_jar.xml 548B
com_android_support_support_v4_26_1_0.xml 672B
junit_junit_4_12_jar.xml 487B
com_google_code_findbugs_jsr305_2_0_1_jar.xml 359B
com_android_support_appcompat_v7_26_1_0.xml 682B
com_android_support_support_core_ui_26_1_0.xml 697B
android_arch_core_common_1_0_0_jar.xml 533B
com_android_support_test_monitor_1_0_2.xml 662B
com_android_support_constraint_constraint_layout_1_1_0.xml 501B
org_hamcrest_hamcrest_library_1_3_jar.xml 557B
org_hamcrest_hamcrest_integration_1_3_jar.xml 578B
com_squareup_javawriter_2_1_1_jar.xml 538B
javax_inject_javax_inject_1_jar.xml 528B
com_android_support_support_media_compat_26_1_0.xml 722B
android_arch_lifecycle_runtime_1_0_0.xml 658B
com_android_support_animated_vector_drawable_26_1_0.xml 742B
com_android_support_test_espresso_espresso_core_3_0_2.xml 710B
com_android_support_support_core_utils_26_1_0.xml 712B
com_android_support_test_runner_1_0_2.xml 657B
net_sf_kxml_kxml2_2_3_0_jar.xml 285B
com_android_support_support_annotations_26_1_0_jar.xml 608B
org_hamcrest_hamcrest_core_1_3_jar.xml 543B
com_android_support_test_espresso_espresso_idling_resource_3_0_2.xml 765B
com_android_support_support_vector_drawable_26_1_0.xml 737B
com_android_support_support_compat_26_1_0.xml 692B
com_android_support_constraint_constraint_layout_solver_1_1_0_jar.xml 425B
com_android_support_support_fragment_26_1_0.xml 702B
com_android_support_support_annotations_27_1_1_jar.xml 609B
.gitignore 127B
local.properties 498B
settings.gradle 16B
build.gradle 573B
共 78 条
- 1
资源评论
- UQT09272021-04-21不行,重复的日程读取只有一个
- 爱我家的小鹿2019-05-13挺不错的,但是该项目的说明文档比较少,而且亲测发现插入数据时有错误
- 逆水寒2020-12-01测试看看有没有用再说。
- fei_a_fei_a2019-07-24添加日历事项无效
峥嵘life
- 粉丝: 2533
- 资源: 114
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功