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

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

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

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

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


当前回答

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

添加的答案:

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

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

其他回答

如果你的目标是android 10,那么你必须把android:hasFragileUserData="true"在AndroidManifest.xml的应用程序标签

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
  <application
    android:name=".MyApplication"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    android:allowBackup="true"
    android:hasFragileUserData="true">

    .....

     </application>

 </manifest>

android:hasFragileUserData是一个新的清单设置(我猜)。“如果为真,则提示用户在卸载时保留应用程序的数据”。这似乎是被滥用的时机,但我可以看到它在某些应用程序中可能有用的地方。

见https://commonsware.com/blog/2019/06/06/random -思考- q -β- 4. - html

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

添加的答案:

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

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

我还补充说:

tools:replace="android:allowBackup"

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

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

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

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

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