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



我已经实现了"旧的"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>

但这似乎并不自然,因为我还没有指出它应该从哪个共享引用文件中排除。有人成功地实现了这一点吗?

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

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

正如注释所指出的,您需要指定一个完整的文件名,所以在exclude指令中输入名称时,请记住包含".xml"文件扩展名。