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

Zak*_*eev 4 permissions android android-backup-service

我尝试在Android模拟器上使用我的应用程序,其中包含我自己的Android备份服务.但是备份不起作用,尽管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)

log中的异常(当我尝试调用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>
Run Code Online (Sandbox Code Playgroud)

Hit*_*sit 5

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

<uses-permission android:name="android.permission.BACKUP"/>
Run Code Online (Sandbox Code Playgroud)

所以,你应该从你的清单中删除它.Android的备份服务 并不需要额外的权限.

但是,可以使用指定的权限,但只能使用"系统"应用程序,因为它需要PROTECTION_SIGNATUREPROTECTION_SIGNATURE_OR_SYSTEM 级别的权限.

只有在调用方法BackupManager.dataChanged(String packageName)时才需要此类权限,但实现备份服务时通常不需要此方法.