uniapp 接入手机日历
uniapp 项目要求接手机日历,获取日历授权,DCloud插件市场 App权限判断和提示 地址:App权限判断和提示 - DCloud 插件市场 App平台https://ext.dcloud.net.cn/plugin?id=594根据上面的步骤 按需引入即可,在此不做过多说明。页面上 app 启动就调授权,在App.vue 里:onShow: function() {// #ifdef AP
·
uniapp 项目要求接手机日历,获取日历授权,DCloud插件市场 App权限判断和提示 地址:
App权限判断和提示 - DCloud 插件市场 App平台https://ext.dcloud.net.cn/plugin?id=594根据上面的步骤 按需引入即可,在此不做过多说明。
页面上 app 启动就调授权,在App.vue 里:
onShow: function() {
// #ifdef APP-PLUS
let that = this;
that.requestAndroidPermission('android.permission.READ_CALENDAR'); // 读取日历
that.requestAndroidPermission('android.permission.WRITE_CALENDAR'); // 写入日历
// #endif
},
methods:{
// 网址的代码 copy
async requestAndroidPermission(permisionID) {
var result = await permision.requestAndroidPermission(permisionID)
var strStatus
if (result == 1) {
strStatus = "已获得授权"
} else if (result == 0) {
strStatus = "未获得授权"
} else {
strStatus = "被永久拒绝权限"
}
// uni.showModal({
// content: permisionID + strStatus,
// showCancel: false
// });
},
},
在 要把数据写入日历的页面里:
<script>
var calanderURL = "content://com.android.calendar/calendars";
var calanderEventURL = "content://com.android.calendar/events";
var calanderRemiderURL = "content://com.android.calendar/reminders";
var calId;
methods:{
// 获取手机平台
getplatform() {
uni.getSystemInfo({
success: res => {
if (res.platform === 'android') {
this.addEvent()
}
}
})
},
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);
// 提前30分钟有提醒
values.put("minutes", "30");
values.put("method", "1");
plus.android.invoke(main.getContentResolver(), "insert", Uri.parse(calanderRemiderURL), values);
},
}
</script>
在 manifest.json app 权限里,要勾选上这两个权限,就可以了。
更多推荐
已为社区贡献7条内容
所有评论(0)