2017-10-13 42 views
1

私はコルドバのアプリケーション (cordova -v 7.0.1、cordova-android 6.1.0)をビルドしました。Android 7ではCordova WebViewのlocalStorageにアクセスできませんか?

これには自動起動が含まれます。つまり、アプリ内で定義されている場合、Bluetoothデバイスが接続されていると、アプリが起動します。

これが行われた方法:

  1. のlocalStorageで保存bluetoothsアドレス(file__0.localstorage)bluetooth.device.action.ACL_CONNECTEDに.// JS側
  2. BroadcastReceiver、。私たちのlocalStorageスタートで接続されたデバイスの試合デバイスがネイティブ側

これは2016年の終わりにコンパイルされ、それも新しいと、今ゴマ加工し、賢明なソフトウェアをapp.//場合のlocalStorage(file__0.localstorage)を取得し、デバイス。

アプリのアップデートをすることにしましたが、今は機能しなくなりました。いくつかのデバッグの後、私はfile__0.localstorageを読むことができませんでした。これはこれまで私が持っているものです:

File dataDir = new File(context.getFilesDir().getParent()); 
    File appWebViewFilesDir = new File(dataDir, "app_webview/Local Storage/file__0.localstorage"); 

    Log.d(TAG, "Absolute path is " + appWebViewFilesDir.getAbsolutePath()); 
    //Result (rooted phone): path is given. 
    //Result (UNrooted phone): path is given. 

    Log.d(TAG, "Fine name is " + appWebViewFilesDir.getName()); 
    //Result (rooted phone): name is given. 
    //Result (UNrooted phone): name is given. 

    Log.d(TAG, "Is file Readable " + appWebViewFilesDir.canRead()); 
    //Result (rooted phone): true. 
    //Result (UNrooted phone): false. 

    Log.d(TAG, "Tring to set file to readable? " +appWebViewFilesDir.setReadable(true)); 
    //Result (rooted phone): true. 
    //Result (UNrooted phone): false. 

    Log.d(TAG, "Tring to set file to readable for all users? " + appWebViewFilesDir.setReadable(true, true)); 
    //Result (rooted phone): true. 
    //Result (UNrooted phone): false. 

    Log.d(TAG, "Is file Readable " + appWebViewFilesDir.canRead()); 
    //Result (rooted phone): true. 
    //Result (UNrooted phone): false. 

    Log.d(TAG, "Does this file exist " + appWebViewFilesDir.exists()); 
    //Result (rooted phone): true. 
    //Result (UNrooted phone): false. 

これはいつ変更ですか?

どのように私はlocalStorage file__0.localstorageにデバイスをルートすることなくアクセス可能にすることができますか?

これを解決するには、新しいデータストレージシステムを実装する必要はありませんか?

P.S.この場合、データの永続性はそれほど重要ではありません。

答えて

0

これは実際にAndroid 7の問題ではありません。 localstorageはwebviewに依存しているようです。そして、Webviewは独立してアップグレードすることができます。

これを解決するには、新しいデータを実装することなく ストレージシステムを使用できますか?

はい。 file__1.localstorageはSQLLite dbでした。今、同じフォルダにapp_webview/Local Storageという別のフォルダ、leveldbが見つかります。 LevelDBはGoogleによって作成されたデータベースです。例えば、Javaラッパーleveldb-androidを使用してアクセスすることができます。そして、イテレータを使用してエントリを繰り返し、必要なものを探してください。私の場合、get()を呼び出してnullを返しました。

関連する問題