Android “remembers” shared preferences after complete app uninstall

后端 未结 3 575
耶瑟儿~
耶瑟儿~ 2020-12-20 06:59

In my Android app I use a set of randomly generated file names to store some data. In order to ensure that the same set of file names are generated at app restart - and are

相关标签:
3条回答
  • 2020-12-20 07:44

    Based on @hungryghost's suggestion the I eventually implemented a solution

    Problem:Shared preferences can be remembered by Android after app reinstall and blanket instructions in the manifest along the lines of android:allowBackup = "false" are not a solution.

    So why not turn the problem into a solution on its own? Here is what I do

    • Check shared preferences for a build specific key.
    • If that key is not found I do two things

      1. Clear out all shared preferences, context.deleteSharedPrefernces(filename)
      2. Now create that build specific key
      3. When I make app changes that require old preferences to be forgotten I simply change the build specific key.
    0 讨论(0)
  • 2020-12-20 07:52

    On (re)install, your app may be restoring files from Google auto-backup (via Google Drive). To disable this feature, you can explicitly set it to false in the manifest:

    <manifest ... >
        ...
        <application android:allowBackup="false" ... >
            ...
        </application>
    </manifest>
    

    If you'd like more granular control over what is backed up/restored and what is not, you can include or exclude specific files from the backups.

    See auto backup documentation: https://developer.android.com/guide/topics/data/autobackup#EnablingAutoBackup

    If you don't want to disable auto backups, but want to reinstall with a "clean slate" (for testing purposes), you can do one of the following:

    • Clear app data after reinstall. This will wipe out files that were restored automatically on install
    • Clear app data prior to uninstall, then force a new backup (so old one gets reset) by using this command: adb shell bmgr backupnow <PACKAGE>

    See how to test backups documentation: https://developer.android.com/guide/topics/data/testingbackup#TestingBackup

    0 讨论(0)
  • 2020-12-20 07:53

    to extend on this, for example mobile/src/debug/AndroidManifest.xml

    <application
        tools:replace="android:allowBackup"
        android:allowBackup="false">
    
        ...
    
    </application>
    

    alike this one can disable auto-backup for debug builds - but keep it enabled for release builds.

    simply because disabling auto-backup for release builds might not be the intended outcome.

    0 讨论(0)
提交回复
热议问题