我尝试在 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>
答案 0 :(得分:5)
Manifest permissions的官方Android文档对权限
一无所知<uses-permission android:name="android.permission.BACKUP"/>
所以,你应该从你的清单中删除它。 Android Backup Service 不需要其他权限。
但是,可以使用指定的权限,但只能使用“系统”应用程序,因为它需要PROTECTION_SIGNATURE
或PROTECTION_SIGNATURE_OR_SYSTEM
level of permissions。
只有在调用方法BackupManager.dataChanged(String packageName)时才需要此类权限,但实施备份服务时通常不需要此方法。
答案 1 :(得分:1)
正常android.permission.BACKUP
操作不需要BackupAgent
权限。将其从您的清单中删除 - 尽管它不应阻止您的BackupAgent
停止工作。
确保在需要备份时调用BackupManager.dataChanged()
方法,否则您的BackupAgent将被调用一次但不会再次调用。它也不需要android.permission.BACKUP
。