mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
fix(android): backwards compat Java cast Float to Long for ApplicationSettings.getNumber (#10140)
This commit is contained in:
committed by
GitHub
parent
04c3d9a979
commit
7c1590abff
@@ -41,8 +41,20 @@ export function getString(key: string, defaultValue?: string): string {
|
|||||||
export function getNumber(key: string, defaultValue?: number): number {
|
export function getNumber(key: string, defaultValue?: number): number {
|
||||||
verify(key);
|
verify(key);
|
||||||
if (hasKey(key)) {
|
if (hasKey(key)) {
|
||||||
// SharedPreferences has no getter or setter for double so use long instead
|
let val;
|
||||||
return java.lang.Double.longBitsToDouble(sharedPreferences.getLong(key, long(0)));
|
|
||||||
|
// TODO: Remove this migration step in a future release
|
||||||
|
try {
|
||||||
|
val = sharedPreferences.getLong(key, long(0));
|
||||||
|
} catch (err) {
|
||||||
|
// If value is old, it might have been stored as a float so we store it anew as a long value to avoid errors
|
||||||
|
const oldVal = sharedPreferences.getFloat(key, float(0.0));
|
||||||
|
setNumber(key, oldVal);
|
||||||
|
|
||||||
|
val = sharedPreferences.getLong(key, long(0));
|
||||||
|
}
|
||||||
|
// SharedPreferences has no getter or setter for double so we retrieve value as a long and convert it to double
|
||||||
|
return java.lang.Double.longBitsToDouble(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
return defaultValue;
|
return defaultValue;
|
||||||
@@ -69,7 +81,7 @@ export function setNumber(key: string, value: number): void {
|
|||||||
verify(key);
|
verify(key);
|
||||||
common.ensureValidValue(value, 'number');
|
common.ensureValidValue(value, 'number');
|
||||||
const editor = sharedPreferences.edit();
|
const editor = sharedPreferences.edit();
|
||||||
// SharedPreferences has no getter or setter for double so use long instead
|
// SharedPreferences has no getter or setter for double so we convert value and store it as a long
|
||||||
editor.putLong(key, java.lang.Double.doubleToRawLongBits(double(value)));
|
editor.putLong(key, java.lang.Double.doubleToRawLongBits(double(value)));
|
||||||
editor.apply();
|
editor.apply();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user