在开发针对所有4.1以上版本的Android应用程序时,我发现卸载应用程序并重新安装它不会清除其数据。

该应用程序被设计成存储它在第一个屏幕中询问的详细信息。 在操作系统4.4.4版本卸载并重新安装后,app会提示用户填写数据,这是正常的。但是在6.0版本中,相同的安装/卸载顺序将带回最初输入的数据。

我试图通过访问/data/data/my package文件夹来确保数据库在卸载后已经消失,并且在卸载期间确实删除了该文件夹。

我试图通过访问设置页面删除该应用程序,通过Titanium Backup,结果是一样的。该设备是运行v6.0的Nexus 5。

这种奇怪行为的原因是什么?


当前回答

我还补充说:

tools:replace="android:allowBackup"

重写已使用组件中的相同选项

其他回答

在Manifest文件的应用标签下添加android:allowBackup="false"解决了我的问题。

这里是android文档备份用户数据与自动备份

只需在manifest .xml中将android:allowBackup="true"更改为android:allowBackup="false"即可。它会成功的。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    <application
        android:allowBackup="false"
        android:icon="@mipmap/app_icon"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
</manifest>

这是因为Android 6有自动备份。如果你不想备份你的数据或者你想包含或排除一些资源,你需要调优manifest <application>标签中的android:allowBackup和android:fullBackupContent。这不是一个bug。

更多关于Android上的AutoBackup的信息请点击这里。

我还补充说:

tools:replace="android:allowBackup"

重写已使用组件中的相同选项

除此之外,我们还发现在Android 9(在HMD诺基亚设备上),即使在通过界面和adb删除应用后,资产仍被保留。

添加的答案:

android:allowBackup=“false” android:fullBackupOnly=“false”

显然,这不是一个新的答案,而是对与我们处于相同位置的人的观察。