uniapp项目设置手机日历提醒
首先在uniapp插件市场下载引入插件 链接地址如下App权限判断和提示 - DCloud 插件市场
引入插件,每次发布提醒事项前判断是否获取日历权限
import permision from "@/js_sdk/wa-permission/permission.js"
var calanderURL = "content://com.android.calendar/calendars";
var calanderEventURL = "content://com.android.calendar/events";
var calanderRemiderURL = "content://com.android.calendar/reminders";
var calId;
// 获取手机平台
getplatform() {
//判断是否获取权限
if (!this.requestAndroidPermission()) return;
console.log(+ new Date('2022-08-03 15:40:00'));
uni.getSystemInfo({
success: res => {
if (res.platform === 'android') {
this.addEvent()
}
}
})
}
// vue的method里编写如下代码
async requestAndroidPermission() {
if (await permision.requestAndroidPermission('android.permission.READ_CALENDAR') != 1 || await permision.requestAndroidPermission('android.permission.WRITE_CALENDAR') != 1) {
uni.showModal({
content: '未获得日历授权',
showCancel: false
});
return false;
}
return true;
}
添加日历事项的方法
addEvent() {
let that = this;
var Uri = plus.android.importClass("android.net.Uri");
var main = plus.android.runtimeMainActivity();
var userCursor = plus.android.invoke(main.getContentResolver(), "query", Uri.parse(calanderURL), null,null,null, null);
plus.android.invoke(userCursor, "moveToLast");
calId = plus.android.invoke(userCursor, "getString", plus.android.invoke(userCursor, "getColumnIndex",
"_id"));
var ContentValues = plus.android.importClass("android.content.ContentValues");
var events = new ContentValues();
events.put("title", "提醒内容");
events.put("description", "提醒描述");
// 插入账户
events.put("calendar_id", calId);
//位置 可不填
// events.put("eventLocation", "位置");
events.put("dtstart", "开始时间"); //时间戳 到毫秒的时间戳
events.put("dtend", "结束时间"); //时间戳 到毫秒的时间戳
events.put("hasAlarm", 1);
events.put("eventTimezone", "Asia/Shanghai"); // 这个是时区,必须有,这个就是中国标准时区,在中国境内的不必再改
// 添加事件
var newEvent = plus.android.invoke(plus.android.runtimeMainActivity().getContentResolver(), "insert", Uri.parse(calanderEventURL), events);
// 事件提醒的设定
var id = plus.android.invoke(newEvent, "getLastPathSegment");
var values = new ContentValues();
values.put("event_id", id);
// 提前15分钟有提醒
values.put("minutes", "15");
values.put("method", "1");
plus.android.invoke(main.getContentResolver(), "insert", Uri.parse(calanderRemiderURL), values);
}
在manifest.json里勾选一下相应android权限就ok啦,添加完之后要稍等几秒才会弹出。