当前位置: 首页 > 面试题库 >

如何防止Android应用程序自动备份?

叶桐
2023-03-14
问题内容

我在某些设备(带有Android 7的Nexus
5x)上遇到非常奇怪的情况:当我清理其数据并卸载它,然后与Studio一起安装时,该应用并未统一,但它使用的是1月24日的数据!我在平板电脑上尝试了相同的步骤,但该应用程序没有数据。

我已经重复了很多次此过程,我清理了我的项目,多次对其进行了重建,并且始终以1月24日的数据(包括数据库和共享首选项)开始。

我什至尝试了adb shell并运行as来清理数据:

bullhead:/data/data/lelisoft.com.lelimath.debug $ ls -l databases/
total 232
-rw-rw---- 1 u0_a259 u0_a259 98304 2017-02-05 11:03 lelimath.sqlite
-rw------- 1 u0_a259 u0_a259 16928 2017-02-05 11:03 lelimath.sqlite-journal

我删除了它们,应用程序似乎空了-直到删除并重新安装-1月24日又回来了。

这是一个日志,它是如何开始的:

$ adb shell am start -n "lelisoft.com.lelimath.debug/lelisoft.com.lelimath.activities.DashboardActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -D
Waiting for application to come online: lelisoft.com.lelimath.debug | lelisoft.com.lelimath.debug.test
I/InstantRun: Instant Run Runtime started. Android package is lelisoft.com.lelimath.debug, real application class is lelisoft.com.lelimath.helpers.LeliMathApp.
D/l.c.l.h.LeliMathApp: onCreate()
D/l.c.l.h.BalanceHelper: Current points balance: 234

这是从调试器获得的数据库位置:

/data/user/0/lelisoft.com.lelimath.debug/databases/lelimath.sqlite

摇篮:

android {
signingConfigs {
}
compileSdkVersion 24
buildToolsVersion "23.0.3"
defaultConfig {
    applicationId "lelisoft.com.lelimath"
    resValue 'string', 'app_name', 'LeliMath'
    minSdkVersion 16
    targetSdkVersion 24
    versionCode 300
    versionName '3.0.0'
    resValue "string", "app_build_number", getDate();
    resValue "string", "app_version", versionName;
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }

    debug {
        applicationIdSuffix ".debug"
        resValue 'string', 'app_name', 'LeliMath DEV'
    }
}

清单部分:

<application
    android:name=".helpers.LeliMathApp"
    android:allowBackup="true"
    android:fullBackupContent="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    tools:ignore="GoogleAppIndexingWarning">

我不想恢复出厂设置以摆脱此数据。我认为这些数据不在我的构建中。我尚未添加它们,并且平板电脑中的应用安装后为空。


问题答案:

自Android 6.0(v
23)起,Android引入了一项称为“应用自动备份”的新功能。它的作用是将应用程序的某些文件备份到用户的Google驱动器。它更新的文件列表包括:

  • 共享的首选项文件
  • 返回目录中的文件 getFilesDir()
  • 返回目录中的文件 getDatabasePath(String)
  • 使用以下命令创建的目录中的文件 getDir(String, int)
  • 外部存储中文件的返回目录 getExternalFilesDir(String)

现在,该行中的内容manifest.xml对此负责:

android:allowBackup="true"

如果您希望禁用备份,则应选择将值设置为false

此外,备份的数据间隔为24小时,Android
为此目的使用JobScheduler
API,这意味着用户无法控制数据传输过程。

此外,用于自动备份的空间被限制为25MB,并且不计入用户的空间配额。

此外,您可以设置为,<include><exclude>上传某些类型的数据,例如,您可能不需要保存用户机密数据,因此它也很灵活,有关更多信息,请访问:Android
Auto Backup for Apps(
Google开发100天)



 类似资料:
  • 我用< code>Python和< code>Django开发了一个web应用程序,需要每天备份数据。目前,< code>Postgres被用作DBMS。 为了执行备份,我发现了<code>django dbbackup</code>模块,但要使用它,我需要运行命令<code>python manage。py dbbackup。 如何在每天的特定时间自动备份?

  • 在android上使用Microsoft teams应用程序时,我决定使用系统内置的屏幕录制应用程序来录制讲座。 屏幕记录应用程序表示有另一个屏幕记录应用程序正在运行(见下面的屏幕截图)。我关闭了团队,重新开始了我的屏幕录制,它起作用了!!。 null 截图 编辑:我已经检查了与此问题类似的其他问题,但都是关于在应用程序代码中使用安全标志的。很明显,我想阻止任何从Google Play下载的应用程

  • Android设备是索尼xperia Z,4.3版本。 我想自动化本机计算器应用程序。 代码: 步骤: 1.将设备与系统连接,并使用adb devices命令检查-它显示我的设备已连接。 2.使用命令启动appium:

  • 我需要启动android前台服务,并在设备启动时从服务启动活动。我广泛地搜索了web和stackoverflow并尝试了不同的建议,但非常奇怪的是,我不能使这个功能工作。 我不明白我做错了什么。 下面是来自我的项目的代码和清单文件的内容。 我做错了什么,如何解决它,在大多数android设备上工作的功能? 这是我的AndroidManifest.xml: 这是我的austostart.java:

  • 即使在谷歌搜索了几个小时后,我也无法找出确切的问题。我已经检查了StackOverflow本身的几个答案,但未能找出问题所在。 错误跟踪如下: 主要活动代码: 更新1:我已经做了答案中建议的所有更改,但每当我单击MainActivity中的“跳过指令”按钮时,我的应用程序仍然崩溃。此外,当我从AdminLogin活动中单击“登录”按钮时,应用程序崩溃。我该怎么办? Update2:我提到了什么是N

  • 关闭MS Edge DevTools会停止正在运行的Visual Studio Web项目。如何防止这种情况? 我有一个正在开发的.NET MVC应用程序。为了进行本地测试和调试,我使用IIS Express从Visual Studio运行web项目。(Visual Studio Pro 2017 v.15.9.5) 我打开Edge DevTools (F12)检查JS或CSS的情况并不少见。问题