使用 Android Service Backup(云备份)时出现 Unclear SecurityException

Posted

技术标签:

【中文标题】使用 Android Service Backup(云备份)时出现 Unclear SecurityException【英文标题】:Unclear SecurityException when using Android Service Backup (Cloud Backup) 【发布时间】:2012-09-09 11:53:09 【问题描述】:

我尝试在Android Emulator上使用我的应用程序,其中包含android Backup Service 和我自己的BackupAgent 的用法。但是备份不起作用,尽管在​​ AndroidManifest.xml 中写入了权限。

权限:

日志中的警告: 09-17 09:05:58.553:WARN/PackageManager(73):未授予权限 android.permission.BACKUP 以打包 my.package (protectionLevel=3 flags=0x1be46 )

日志中的异常(当我尝试调用 requestRestore() 时): java.lang.SecurityException: getCurrentTransport: 用户 10040 和当前进程都没有 android.permission.BACKUP。

我的代码有什么问题?

UPD:我的清单

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="my.package">

<uses-permission android:name="android.permission.BACKUP"/>

<application android:name="my.package.MyApplicationName" android:backupAgent="my.package.MyBackupAgent">

<meta-data android:name="com.google.android.backup.api_key" android:value="my_backup_api_key">

</application>

</manifest>

【问题讨论】:

尝试要求整个应用程序的权限,你确定你在更改清单后构建项目? 我确定我已经构建了它,并且我的权限是针对整个应用程序的。 能否请您发布整个 androidManifest 文件? 我已经在我的问题更新中发布了它 Error : Neither user 10066 nor current process has android.permission.BACKUP的可能重复 【参考方案1】:

Manifest permissions 的 Android 官方文档对权限一无所知

<uses-permission android:name="android.permission.BACKUP"/>

因此,您应该将其从清单中删除。 Android Backup Service 不需要需要额外的权限。

但是,可以使用指定的权限,但只能由“系统”应用程序使用,因为它需要 PROTECTION_SIGNATUREPROTECTION_SIGNATURE_OR_SYSTEM level of permissions。

只有在调用BackupManager.dataChanged(String packageName)方法时才需要这种权限,但通常在实现Backup Service时不需要该方法。

【讨论】:

调用 BackupManager.dataChanged 非常重要。它不需要 android.permission.BACKUP。【参考方案2】:

正常的BackupAgent 操作不需要android.permission.BACKUP 权限。从您的清单中删除它 - 尽管它不应该阻止您的 BackupAgent 工作。

当您需要进行备份时,请务必调用BackupManager.dataChanged() 方法,否则您的 BackupAgent 将被调用一次,但不会再调用一次。它也不需要android.permission.BACKUP

【讨论】:

以上是关于使用 Android Service Backup(云备份)时出现 Unclear SecurityException的主要内容,如果未能解决你的问题,请参考以下文章

Cloud Server Backup Service(CSBS)

Android数据备份(Android Data Backup)

Android数据备份(Android Data Backup)

Android application backup

带你全面读懂Android Backup

Android:(本地可通信的前台远程)Service使用全面介绍