[英]Appcelerator SDK 5.4 Android Calendar permission on Android 6
我已经阅读了很多帖子,但问题仍然存在......
我的应用程序需要日历权限,这将在Android 5之前正常工作。在我的trap.xml中,权限ar设置如下:
<android xmlns:android="http://schemas.android.com/apk/res/android">
<manifest>
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23"/>
<uses-permission android:name="android.permission.READ_CALENDAR"/>
<uses-permission android:name="android.permission.WRITE_CALENDAR"/>
</manifest>
</android>
当我尝试设置我在Jira上找到的权限时:
function calenderTask() {
if (Ti.Calendar.hasCalendarPermissions()) {
showCalendars(Ti.Calendar.selectableCalendars);
} else {
Ti.Calendar.requestCalendarPermissions(function(e) {
if (e.success) {
showCalendars(Ti.Calendar.selectableCalendars);
} else {
Ti.API.error(e.error);
alert('Access to calendar is not allowed');
}
});
}
}
function showCalendars(calendars) {
for (var i = 0; i < calendars.length; i++) {
Ti.API.info("Calender: "+calendars[i].name);
}
}
calenderTask();
只有在设备上全新安装(Samgung S7,Android 6)后,当我在代码中发出警报时才会有一些操作。
下一次运行看起来代码被忽略了。
而且......最重要的是,没有权限设置。
当我在我的设备的设置中手动设置权限时,该应用程序工作正常。
请问有人为我提供解决方案吗?
我也试图找到一种更好的方法来检查Android 6上的日历权限。同时,我正在使用此代码将用户权限发送到对话框上的应用程序设置:
var dialog = Ti.UI.createAlertDialog();
dialog.message = 'Please check your calendar permissions';
dialog.cancel = 1;
dialog.buttonNames = ['Settings', 'Cancel'];
dialog.addEventListener('click', function(e){
var intentData = {action: "android.settings.APPLICATION_DETAILS_SETTINGS", data: "package:" + Ti.App.getId()};
var flags = [ Ti.Android.FLAG_ACTIVITY_NEW_TASK, Ti.Android.FLAG_ACTIVITY_NO_HISTORY, Ti.Android.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS];
if (e.index === 0){
win.openIntent(intentData, flags);
}
});
dialog.show();
我希望它有点帮助......
我找到了解决我的问题的解决方案/解决方法,没有要求日历权限。
在设备的设置部分,我通过特定应用手动删除了权限。 现在我对已安装的应用程序的所有设置进行了重置,然后在启动应用程序的特定部分时在设备上询问问题。 因此只需删除权限并从设备中删除应用程序是不够的!
我使用过之前列出的代码部分,来自Jira。
所以,目前我的问题已经解决了(我认为)并且应用程序在首次安装后要求获得所需的权限。
卡洛斯,感谢您的评论,我希望您也可以对我的调查做些什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.