使用Android 6.0自动备份排除特定的共享首选项密钥

时间:2015-10-29 08:17:06

标签: android-6.0-marshmallow android-backup-service

我已实施了#34; old" GCM实现,其中示例代码具有以下内容:

public static final String PROPERTY_REG_ID = "registration_id";
private SharedPreferences getGCMPreferences(Context context) {
    return context.getSharedPreferences(SampleApp.class.getSimpleName(),
            Context.MODE_PRIVATE);
}
...
String registrationId = prefs.getString(PROPERTY_REG_ID, "");

使用Android 6.0中的新备份系统,它表示您应该排除此密钥,但排除格式文档: http://developer.android.com/training/backup/autosyncapi.html

似乎并没有表明如何排除共享偏好,除了说:

  

sharedpref:指定一个SharedPreferences对象   getSharedPreferences()方法返回。

根据我的知识,没有getSharedPreferences()没有参数?

我试过了:

<?xml version="1.0" encoding="utf-8"?>
<full-backup-content>
  <exclude domain="sharedpref" path="registration_id"/>
</full-backup-content>

但这似乎并不自然,因为我还没有指出它应该排除哪个共享偏好文件。有人成功实现过这个吗?

1 个答案:

答案 0 :(得分:9)

排除是针对共享首选项文件,而不是文件中的单个键。

(在您的示例中,您的文件名是通过SampleApp.class.getSimpleName()获得的。)

正如评论所指出的,您需要指定一个完整的文件名,因此在将名称放入exclude指令时请记住包含“.xml”文件扩展名。