From e59c035367a6746099902eb29e2949ae57a1f8ac Mon Sep 17 00:00:00 2001 From: nikotm Date: Wed, 11 May 2022 17:51:23 +0200 Subject: [PATCH 1/3] fix(android-application-settings): use correct storage on versions above N --- .../application-settings/index.android.ts | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/core/application-settings/index.android.ts b/packages/core/application-settings/index.android.ts index b5a14a1551..d5df4a8351 100644 --- a/packages/core/application-settings/index.android.ts +++ b/packages/core/application-settings/index.android.ts @@ -1,10 +1,25 @@ import * as common from './application-settings-common'; import { getNativeApplication } from '../application'; +import { Trace } from '../trace'; +const DB_KEY = 'prefs.db'; let sharedPreferences: android.content.SharedPreferences; function ensureSharedPreferences() { - if (!sharedPreferences) { - sharedPreferences = (getNativeApplication()).getApplicationContext().getSharedPreferences('prefs.db', 0); + let context = getNativeApplication().getApplicationContext(); + if (context && !sharedPreferences) { + if (android.os.Build.VERSION.SDK_INT >= 24) { + const deviceContext = context.createDeviceProtectedStorageContext(); + if (deviceContext && !deviceContext.moveSharedPreferencesFrom(context, DB_KEY)) { + const warnMessage = 'Failed to migrate Application Settings to Device Protected Storage'; + if (Trace.isEnabled()) { + Trace.write(warnMessage, Trace.categories.Debug, Trace.messageType.warn); + } else { + console.log(warnMessage); + } + } + context = deviceContext; + } + sharedPreferences = context.getSharedPreferences(DB_KEY, android.content.Context.MODE_PRIVATE); } } From b0f6e56fce83d8664ad262fd892b11ffab336f17 Mon Sep 17 00:00:00 2001 From: nikotm Date: Thu, 12 May 2022 15:21:30 +0200 Subject: [PATCH 2/3] fix: removed an unnecessary check --- packages/core/application-settings/index.android.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/application-settings/index.android.ts b/packages/core/application-settings/index.android.ts index d5df4a8351..a415979200 100644 --- a/packages/core/application-settings/index.android.ts +++ b/packages/core/application-settings/index.android.ts @@ -6,7 +6,7 @@ const DB_KEY = 'prefs.db'; let sharedPreferences: android.content.SharedPreferences; function ensureSharedPreferences() { let context = getNativeApplication().getApplicationContext(); - if (context && !sharedPreferences) { + if (!sharedPreferences) { if (android.os.Build.VERSION.SDK_INT >= 24) { const deviceContext = context.createDeviceProtectedStorageContext(); if (deviceContext && !deviceContext.moveSharedPreferencesFrom(context, DB_KEY)) { From c34bf5980d26ad7c9f63d47c217da27913ed198b Mon Sep 17 00:00:00 2001 From: nikotm Date: Thu, 12 May 2022 16:12:33 +0200 Subject: [PATCH 3/3] fix: use cached sdkVersion --- packages/core/application-settings/index.android.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/core/application-settings/index.android.ts b/packages/core/application-settings/index.android.ts index a415979200..fa5f1fd872 100644 --- a/packages/core/application-settings/index.android.ts +++ b/packages/core/application-settings/index.android.ts @@ -1,13 +1,16 @@ import * as common from './application-settings-common'; import { getNativeApplication } from '../application'; import { Trace } from '../trace'; +import { Device } from '../platform'; +import lazy from '../utils/lazy'; +const sdkVersion = lazy(() => parseInt(Device.sdkVersion)); const DB_KEY = 'prefs.db'; let sharedPreferences: android.content.SharedPreferences; function ensureSharedPreferences() { let context = getNativeApplication().getApplicationContext(); if (!sharedPreferences) { - if (android.os.Build.VERSION.SDK_INT >= 24) { + if (sdkVersion() >= 24) { const deviceContext = context.createDeviceProtectedStorageContext(); if (deviceContext && !deviceContext.moveSharedPreferencesFrom(context, DB_KEY)) { const warnMessage = 'Failed to migrate Application Settings to Device Protected Storage';