使用 Android 6.0 自动备份排除特定的 sharedpreference 键

Exclude specific sharedpreference key with Android 6.0 auto backup

我已经实现了 "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: Specifies a SharedPreferences object that the getSharedPreferences() method returns.

据我所知,没有没有参数的 getSharedPreferences() 吗?

我试过了:

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

但这似乎并不自然,因为我没有指出它应该从哪个 sharedpreference 文件中排除。有人成功实施了吗?

排除的是共享首选项文件,而不是文件中的单个密钥。

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

正如评论所指出的,您需要指定一个完整的文件名,所以当您在排除指令中输入名称时,请记住包含“.xml”文件扩展名。