使用Android服务备份时不清楚SecurityException(云备份)

时间:2012-09-17 09:18:41

标签: android permissions android-backup-service

我尝试在 Android模拟器上使用我的应用程序,其中包含Android Backup Service与我自己的BackupAgent的使用情况。但备份无效,尽管AndroidManifest.xml中写入了权限。

权限:< uses-permission android:name =“android.permission.BACKUP”/>

日志中警告: 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>

2 个答案:

答案 0 :(得分:5)

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)时才需要此类权限,但实施备份服务时通常不需要此方法。

答案 1 :(得分:1)

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

确保在需要备份时调用BackupManager.dataChanged()方法,否则您的BackupAgent将被调用一次但不会再次调用。它也不需要android.permission.BACKUP