From fcd8afe0728dd71d397015632a329278557788e7 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 9 Feb 2021 15:37:05 -0300 Subject: [PATCH] Don't crash when storage app gets uninstalled --- .../seedvault/settings/SettingsViewModel.kt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/stevesoltys/seedvault/settings/SettingsViewModel.kt b/app/src/main/java/com/stevesoltys/seedvault/settings/SettingsViewModel.kt index aadf7127..10a45232 100644 --- a/app/src/main/java/com/stevesoltys/seedvault/settings/SettingsViewModel.kt +++ b/app/src/main/java/com/stevesoltys/seedvault/settings/SettingsViewModel.kt @@ -8,6 +8,7 @@ import android.net.NetworkCapabilities import android.net.NetworkRequest import android.net.Uri import android.provider.Settings +import android.util.Log import android.widget.Toast import android.widget.Toast.LENGTH_LONG import androidx.annotation.UiThread @@ -27,6 +28,7 @@ import com.stevesoltys.seedvault.ui.notification.BackupNotificationManager import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +private const val TAG = "SettingsViewModel" private const val USER_FULL_DATA_BACKUP_AWARE = "user_full_data_backup_aware" internal class SettingsViewModel( @@ -93,8 +95,14 @@ internal class SettingsViewModel( val storage = settingsManager.getStorage() ?: return // register storage observer - contentResolver.unregisterContentObserver(storageObserver) - contentResolver.registerContentObserver(storage.uri, false, storageObserver) + try { + contentResolver.unregisterContentObserver(storageObserver) + contentResolver.registerContentObserver(storage.uri, false, storageObserver) + } catch (e: SecurityException) { + // This can happen if the app providing the storage was uninstalled. + // validLocationIsSet() gets called elsewhere and prompts for a new storage location. + Log.e(TAG, "Error registering content observer for ${storage.uri}", e) + } // register network observer if needed if (networkCallback.registered && !storage.requiresNetwork) {