4

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

权限: <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>
4

2 回答 2

5

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

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

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

但是,可以使用指定的权限,但只能由“系统”应用程序使用,因为它需要PROTECTION_SIGNATURE权限PROTECTION_SIGNATURE_OR_SYSTEM 级别

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

于 2012-09-17T10:27:58.343 回答
1

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

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

于 2012-10-16T20:36:35.793 回答