使用 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”文件扩展名。
我已经实现了 "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”文件扩展名。