【问题标题】:Unclear SecurityException when using Android Service Backup (Cloud Backup)使用 Android Service Backup(云备份)时出现 Unclear SecurityException
【发布时间】: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>

【问题讨论】:

标签: android permissions android-backup-service


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2015-09-17
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    相关资源
    最近更新 更多