Merge pull request #206 from grote/content-provider-removed-crash

Don't crash when storage app gets uninstalled
This commit is contained in:
Torsten Grote 2021-02-17 08:19:25 -03:00 committed by GitHub
commit a0bf7b6ae3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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
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) {