mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-06-05 21:59:17 +02:00
require write_calendar permission before activating caldav sync
This commit is contained in:
@@ -11,6 +11,9 @@
|
|||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||||
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
|
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.READ_CALENDAR" />
|
||||||
|
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:name=".App"
|
android:name=".App"
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
|
@@ -90,6 +90,10 @@ class MainActivity : SimpleActivity(), NavigationListener {
|
|||||||
config.googleSync = false
|
config.googleSync = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!hasCalendarPermission()) {
|
||||||
|
config.caldavSync = false
|
||||||
|
}
|
||||||
|
|
||||||
if (isGoogleSyncActive()) {
|
if (isGoogleSyncActive()) {
|
||||||
FetchGoogleEventsTask(applicationContext, googleSyncListener).execute()
|
FetchGoogleEventsTask(applicationContext, googleSyncListener).execute()
|
||||||
}
|
}
|
||||||
|
@@ -39,6 +39,7 @@ class SettingsActivity : SimpleActivity() {
|
|||||||
private val ACCOUNTS_PERMISSION = 2
|
private val ACCOUNTS_PERMISSION = 2
|
||||||
private val REQUEST_ACCOUNT_NAME = 3
|
private val REQUEST_ACCOUNT_NAME = 3
|
||||||
private val REQUEST_GOOGLE_PLAY_SERVICES = 4
|
private val REQUEST_GOOGLE_PLAY_SERVICES = 4
|
||||||
|
private val CALENDAR_PERMISSION = 5
|
||||||
|
|
||||||
lateinit var res: Resources
|
lateinit var res: Resources
|
||||||
private var mStoredPrimaryColor = 0
|
private var mStoredPrimaryColor = 0
|
||||||
@@ -135,10 +136,22 @@ class SettingsActivity : SimpleActivity() {
|
|||||||
private fun setupCaldavSync() {
|
private fun setupCaldavSync() {
|
||||||
settings_caldav_sync.isChecked = config.caldavSync
|
settings_caldav_sync.isChecked = config.caldavSync
|
||||||
settings_caldav_sync_holder.setOnClickListener {
|
settings_caldav_sync_holder.setOnClickListener {
|
||||||
|
if (config.caldavSync) {
|
||||||
|
toggleCaldavSync()
|
||||||
|
} else {
|
||||||
|
if (hasCalendarPermission()) {
|
||||||
|
toggleCaldavSync()
|
||||||
|
} else {
|
||||||
|
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.WRITE_CALENDAR), CALENDAR_PERMISSION)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun toggleCaldavSync() {
|
||||||
settings_caldav_sync.toggle()
|
settings_caldav_sync.toggle()
|
||||||
config.caldavSync = settings_caldav_sync.isChecked
|
config.caldavSync = settings_caldav_sync.isChecked
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private fun toggleGoogleSync() {
|
private fun toggleGoogleSync() {
|
||||||
settings_google_sync.toggle()
|
settings_google_sync.toggle()
|
||||||
@@ -438,6 +451,10 @@ class SettingsActivity : SimpleActivity() {
|
|||||||
} else {
|
} else {
|
||||||
disableGoogleSync()
|
disableGoogleSync()
|
||||||
}
|
}
|
||||||
|
} else if (requestCode == CALENDAR_PERMISSION) {
|
||||||
|
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||||
|
toggleCaldavSync()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
package com.simplemobiletools.calendar.extensions
|
package com.simplemobiletools.calendar.extensions
|
||||||
|
|
||||||
|
import android.Manifest
|
||||||
import android.annotation.TargetApi
|
import android.annotation.TargetApi
|
||||||
import android.app.AlarmManager
|
import android.app.AlarmManager
|
||||||
import android.app.Notification
|
import android.app.Notification
|
||||||
@@ -9,10 +10,12 @@ import android.appwidget.AppWidgetManager
|
|||||||
import android.content.ComponentName
|
import android.content.ComponentName
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.content.pm.PackageManager
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.net.ConnectivityManager
|
import android.net.ConnectivityManager
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
import android.support.v4.content.ContextCompat
|
||||||
import android.support.v7.app.NotificationCompat
|
import android.support.v7.app.NotificationCompat
|
||||||
import com.google.api.client.extensions.android.http.AndroidHttp
|
import com.google.api.client.extensions.android.http.AndroidHttp
|
||||||
import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential
|
import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential
|
||||||
@@ -35,6 +38,8 @@ import org.joda.time.DateTimeZone
|
|||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
|
fun Context.hasCalendarPermission() = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_CALENDAR) == PackageManager.PERMISSION_GRANTED
|
||||||
|
|
||||||
fun Context.updateWidgets() {
|
fun Context.updateWidgets() {
|
||||||
val widgetsCnt = AppWidgetManager.getInstance(this).getAppWidgetIds(ComponentName(this, MyWidgetMonthlyProvider::class.java))
|
val widgetsCnt = AppWidgetManager.getInstance(this).getAppWidgetIds(ComponentName(this, MyWidgetMonthlyProvider::class.java))
|
||||||
if (widgetsCnt.isNotEmpty()) {
|
if (widgetsCnt.isNotEmpty()) {
|
||||||
|
Reference in New Issue
Block a user