78 lines
2.7 KiB
Kotlin
78 lines
2.7 KiB
Kotlin
|
package com.stevesoltys.backup.settings
|
||
|
|
||
|
import android.app.backup.IBackupManager
|
||
|
import android.content.ContentResolver
|
||
|
import android.os.Bundle
|
||
|
import android.os.RemoteException
|
||
|
import android.provider.Settings
|
||
|
import android.util.Log
|
||
|
|
||
|
import androidx.preference.PreferenceFragmentCompat
|
||
|
import androidx.preference.TwoStatePreference
|
||
|
|
||
|
import com.stevesoltys.backup.R
|
||
|
|
||
|
import android.content.Context.BACKUP_SERVICE
|
||
|
import android.os.ServiceManager.getService
|
||
|
import android.provider.Settings.Secure.BACKUP_AUTO_RESTORE
|
||
|
import androidx.preference.Preference
|
||
|
import androidx.preference.Preference.OnPreferenceChangeListener
|
||
|
|
||
|
private val TAG = SettingsFragment::class.java.name
|
||
|
|
||
|
class SettingsFragment : PreferenceFragmentCompat() {
|
||
|
|
||
|
private lateinit var backupManager: IBackupManager
|
||
|
|
||
|
private lateinit var backup: TwoStatePreference
|
||
|
private lateinit var autoRestore: TwoStatePreference
|
||
|
|
||
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||
|
setPreferencesFromResource(R.xml.settings, rootKey)
|
||
|
|
||
|
backupManager = IBackupManager.Stub.asInterface(getService(BACKUP_SERVICE))
|
||
|
|
||
|
backup = findPreference("backup") as TwoStatePreference
|
||
|
backup.onPreferenceChangeListener = OnPreferenceChangeListener { _, newValue ->
|
||
|
val enabled = newValue as Boolean
|
||
|
try {
|
||
|
backupManager.isBackupEnabled = enabled
|
||
|
return@OnPreferenceChangeListener true
|
||
|
} catch (e: RemoteException) {
|
||
|
e.printStackTrace()
|
||
|
backup.isChecked = !enabled
|
||
|
return@OnPreferenceChangeListener false
|
||
|
}
|
||
|
}
|
||
|
|
||
|
autoRestore = findPreference("auto_restore") as TwoStatePreference
|
||
|
autoRestore.onPreferenceChangeListener = OnPreferenceChangeListener { _, newValue ->
|
||
|
val enabled = newValue as Boolean
|
||
|
try {
|
||
|
backupManager.setAutoRestore(enabled)
|
||
|
return@OnPreferenceChangeListener true
|
||
|
} catch (e: RemoteException) {
|
||
|
Log.e(TAG, "Error communicating with BackupManager", e)
|
||
|
autoRestore.isChecked = !enabled
|
||
|
return@OnPreferenceChangeListener false
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
override fun onStart() {
|
||
|
super.onStart()
|
||
|
|
||
|
try {
|
||
|
backup.isChecked = backupManager.isBackupEnabled
|
||
|
backup.isEnabled = true
|
||
|
} catch (e: RemoteException) {
|
||
|
Log.e(TAG, "Error communicating with BackupManager", e)
|
||
|
backup.isEnabled = false
|
||
|
}
|
||
|
|
||
|
val resolver = requireContext().contentResolver
|
||
|
autoRestore.isChecked = Settings.Secure.getInt(resolver, BACKUP_AUTO_RESTORE, 1) == 1
|
||
|
}
|
||
|
|
||
|
}
|