/**
* @fileoverview Auto.js script to create a calendar event with multiple reminders.
* This script requests calendar permissions, creates an event, and sets several
* reminders for it.
*/
// 1. Request necessary permissions
// It's crucial to grant these permissions for the script to function.
runtime.requestPermissions([
"android.permission.READ_CALENDAR",
"android.permission.WRITE_CALENDAR"
]);
// 2. Check if permissions were granted
// If permissions are not granted, the script will show a message and exit gracefully.
if (!runtime.isPermissionGranted("android.permission.READ_CALENDAR") || !runtime.isPermissionGranted("android.permission.WRITE_CALENDAR")) {
toastLog("Permission denied. The script cannot add a calendar event.");
exit();
}
// 3. Import required Java classes
var Long = java.lang.Long;
var TimeZone = java.util.TimeZone;
var ContentValues = android.content.ContentValues;
var CalendarContract = android.provider.CalendarContract;
var context = context; // Get the Android context
// ======================= CONFIGURATION =======================
// Modify the parameters below to customize the event.
// Event details
const EVENT_TITLE = "Auto.js Reminder Event";
const EVENT_DESCRIPTION = "This is an event automatically added by an Auto.js script.";
// Event timing
const START_OFFSET_HOURS = 8; // Event will start in 8 hours from now.
const DURATION_MINUTES = 1; // The event will last for 1 minute.
// Calendar ID
// IMPORTANT: This ID might be different on your device. '1' is usually the primary
// calendar, but if it fails, you may need to find the correct ID.
const CALENDAR_ID = 1;
// Reminder times (in minutes before the event starts)
// Add or remove values here to change the reminders.
const REMINDER_MINUTES = [30, 10, 5, 0]; // 0 means at the time of the event.
// =============================================================
// 4. Calculate event start and end times in milliseconds
var now = new Date().getTime();
var startTime = Long.valueOf(now + START_OFFSET_HOURS * 60 * 60 * 1000);
var endTime = Long.valueOf(startTime + DURATION_MINUTES * 60 * 1000);
// 5. Create the event content
var event = new ContentValues();
event.put(CalendarContract.Events.DTSTART, startTime);
event.put(CalendarContract.Events.DTEND, endTime);
event.put(CalendarContract.Events.TITLE, EVENT_TITLE);
event.put(CalendarContract.Events.DESCRIPTION, EVENT_DESCRIPTION);
event.put(CalendarContract.Events.CALENDAR_ID, Long.valueOf(CALENDAR_ID));
event.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
// 6. Insert the event and add reminders
try {
// Insert the event into the calendar
var uri = context.getContentResolver().insert(CalendarContract.Events.CONTENT_URI, event);
if (uri != null) {
// Successfully inserted, now get the event ID
var eventId = Long.valueOf(uri.getLastPathSegment());
toastLog("Event created successfully! ID: " + eventId);
// Loop through the reminder times and add each one
REMINDER_MINUTES.forEach(function(minutes) {
var reminder = new ContentValues();
reminder.put(CalendarContract.Reminders.EVENT_ID, eventId);
reminder.put(CalendarContract.Reminders.MINUTES, Long.valueOf(minutes));
// Use the standard alert/notification method for the reminder
reminder.put(CalendarContract.Reminders.METHOD, Long.valueOf(CalendarContract.Reminders.METHOD_ALERT));
// Insert the reminder
var reminderUri = context.getContentResolver().insert(CalendarContract.Reminders.CONTENT_URI, reminder);
if (reminderUri) {
log("Successfully added reminder for " + minutes + " minutes before.");
} else {
log("Failed to add reminder for " + minutes + " minutes before.");
}
});
toastLog("All reminders have been set.");
} else {
toastLog("Failed to create the event. The URI was null.");
}
} catch (e) {
// Catch any errors during the insertion process
toastLog("An error occurred: " + e);
}
// 动态申请权限
runtime.requestPermissions([
"android.permission.READ_CALENDAR",
"android.permission.WRITE_CALENDAR"
]);
// 引入 Java 类型
var Long = java.lang.Long;
var TimeZone = java.util.TimeZone;
var ContentValues = android.content.ContentValues;
var CalendarContract = android.provider.CalendarContract;
// 获取当前时间
var now = new Date().getTime();
var start = Long.valueOf(now + 8*60 * 60 * 1000); // 当前时间 + 8h
var end = Long.valueOf(start + 1 * 60 * 1000); // 持续1分钟
// 创建事件内容
var event = new ContentValues();
event.put(CalendarContract.Events.DTSTART, start);
event.put(CalendarContract.Events.DTEND, end);
event.put(CalendarContract.Events.TITLE, "AutoJS提醒事件");
event.put(CalendarContract.Events.DESCRIPTION, "这是一个由AutoJS自动添加的事件");
event.put(CalendarContract.Events.CALENDAR_ID, Long.valueOf(1)); // 日历ID,需根据设备调整
event.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
// 插入事件
try {
var uri = context.getContentResolver().insert(CalendarContract.Events.CONTENT_URI, event);
if (uri != null) {
// 获取事件ID
var eventId = Long.valueOf(uri.getLastPathSegment());
// 创建提醒内容(提前0分钟,即“开始时”提醒)
var reminder = new ContentValues();
reminder.put(CalendarContract.Reminders.EVENT_ID, eventId);
reminder.put(CalendarContract.Reminders.MINUTES, Long.valueOf(0)); // 提前0分钟提醒
reminder.put(CalendarContract.Reminders.METHOD, Long.valueOf(CalendarContract.Reminders.METHOD_ALERT)); // 使用系统提醒
// 插入提醒
var reminderUri = context.getContentResolver().insert(CalendarContract.Reminders.CONTENT_URI, reminder);
toastLog("事件和提醒已成功添加!");
} else {
toastLog("事件添加失败!");
}
} catch (e) {
toastLog("插入事件或提醒时出错:" + e);
}
//exit()
"ui";
ui.layout(
<vertical padding="16">
<text textSize="16sp" textColor="black" text="请输入姓名"/>
<input id="name" text="小明"/>
<button id="ok" text="确定"/>
<button id="cancel" text="Cancel"/>
</vertical>
);
//指定确定按钮点击时要执行的动作
ui.ok.click(function() {
//通过getText()获取输入的内容
var name = ui.name.getText();
toast(name + "您好!");
});
ui.cancel.click(function() {
ui.finish();
exit();
});
// 动态申请权限
runtime.requestPermissions([
"android.permission.READ_CALENDAR",
"android.permission.WRITE_CALENDAR"
]);
// 引入 Java 类型
var Long = java.lang.Long;
var TimeZone = java.util.TimeZone;
var ContentValues = android.content.ContentValues;
var CalendarContract = android.provider.CalendarContract;
// 获取当前时间
var now = new Date().getTime();
var start = Long.valueOf(now + 8*60 * 60 * 1000); // 当前时间 + 8h
var end = Long.valueOf(start + 1 * 60 * 1000); // 持续1分钟
// 创建事件内容
var event = new ContentValues();
event.put(CalendarContract.Events.DTSTART, start);
event.put(CalendarContract.Events.DTEND, end);
event.put(CalendarContract.Events.TITLE, "AutoJS提醒事件");
event.put(CalendarContract.Events.DESCRIPTION, "这是一个由AutoJS自动添加的事件");
event.put(CalendarContract.Events.CALENDAR_ID, Long.valueOf(1)); // 日历ID,需根据设备调整
event.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
// 插入事件
try {
var uri = context.getContentResolver().insert(CalendarContract.Events.CONTENT_URI, event);
if (uri != null) {
// 获取事件ID
var eventId = Long.valueOf(uri.getLastPathSegment());
// 创建提醒内容(提前0分钟,即“开始时”提醒)
var reminder = new ContentValues();
reminder.put(CalendarContract.Reminders.EVENT_ID, eventId);
reminder.put(CalendarContract.Reminders.MINUTES, Long.valueOf(0)); // 提前0分钟提醒
reminder.put(CalendarContract.Reminders.METHOD, Long.valueOf(CalendarContract.Reminders.METHOD_ALERT)); // 使用系统提醒
// 插入提醒
var reminderUri = context.getContentResolver().insert(CalendarContract.Reminders.CONTENT_URI, reminder);
toastLog("事件和提醒已成功添加!");
} else {
toastLog("事件添加失败!");
}
} catch (e) {
toastLog("插入事件或提醒时出错:" + e);
}
//exit()