2016-05-11 12 views
5

AsyncStorageを使用して、リアクションネイティブにユーザー設定をほとんど保存していません。今、私はバックグラウンドサービスからそれらの好みを得る必要があります。 JavaレイヤーからAsyncStorageにアクセスすることはできません。それを行う方法はありますか?React NativeのAsyncStorageに保存されているデータに、Javaレイヤーからアクセスできますか?

iOSでは、RCTAsyncLocalStorage.hをインポートし、_getValueForKeyとコールできます。しかし、私はAndroidでそれを行う方法を見つけることができません。

答えて

5

私はAsyncStorageをJavaレイヤーから使用しようとしました。しかし、私はできませんでした。そこで、javacriptレイヤーからAndroidネイティブSharedPreferencesにアクセスするReact Nativeプラグインを作成しました。私は今、私は両方JavaReact Native層からこのSharedPreferencesを使用していますgithubの(https://github.com/sriraman/react-native-shared-preferences

でそれを公開しています。

0

私の解決策はRocksdbを使用しないので、SQLite DBは常にストレージとして使用されていると確信できます(ローカルではSQLiteデータベースよりも優先されます)ストレージ))

データベースは、テーブル名「catalystLocalStorage」で(あなたがReactDatabaseSupplier#TABLE_NAMEを読み取ろうとすることができますが、それが保護されます、シンプルなキー値DB(2列、keyvalue)である、あなたは、リフレクションを使用して試すことができ、私はそれが問題の価値があるのか​​分からない)

Cursor catalystLocalStorage = null; 
SQLiteDatabase readableDatabase = null; 

try { 
    readableDatabase = ReactDatabaseSupplier.getInstance(this.getApplicationContext()).getReadableDatabase(); 
    catalystLocalStorage = readableDatabase.query("catalystLocalStorage", new String[]{"value"}, "key = ?", new String[] { "keyName" }, null, null, null); 
    final String value = catalystLocalStorage.getString(catalystLocalStorage.getColumnIndex("value")); 
    [...] 
} finally { 
    if (catalystLocalStorage != null) { 
    catalystLocalStorage.close(); 
    } 

    if (readableDatabase != null) { 
    readableDatabase.close(); 
    } 
} 

それは私には、将来の可能性がどのようにすることができるかわからない

0

私は仕事をする次のコードがあります。

SQLiteDatabase readableDatabase = null; 
readableDatabase = ReactDatabaseSupplier.getInstance(this.getApplicationContext()).getReadableDatabase(); 
if (readableDatabase != null) { 
    String impl = AsyncLocalStorageUtil.getItemImpl(readableDatabase, "myTableName"); 
    Log.d(TAG, "impl: " + impl); 
} 
+0

私は '' 'redux-persist'''を使っていますが、' 'myTableName'''の名前を知る方法はありますか? – Pablo

関連する問題