Android 7中无法访问Cordova WebView的localStorage?

时间:2017-10-13 11:59:13

标签: javascript android cordova local-storage

我已经构建了一个Cordova应用程序 (cordova -v 7.0.1,cordova-android 6.1.0)。

包括自动启动。这意味着当DEFINED在应用程序中连接蓝牙设备时,应用程序将启动。

这样做的方式:

  1. 在localStorage中保存蓝牙地址(file__0.localstorage).// JS方
  2. BroadcastReceiver,在bluetooth.device.action.ACL_CONNECTED上。如果在我们的LocalStorage Start app中连接设备匹配设备,则检索localStorage(file__0.localstorage)//原生端
  3. 这是在2016年底编制的。它现在已经工作了,即使是使用更新的,软件方面的设备。

    我决定做一些应用更新,现在它停止了工作。经过一些调试后,我看到我无法读取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。在这种情况下,数据持久性并不重要。

1 个答案:

答案 0 :(得分:1)

这不是Android 7的问题。 localstorage似乎取决于webview。 webview可以独立升级。

  

可以在不必实现新数据的情况下解决此问题   存储系统?

是。 file__1.localstorage是一个SQLLite数据库。现在,在同一文件夹app_webview/Local Storage中,您应找到另一个文件夹leveldbLevelDB是由谷歌创建的数据库。您可以使用java包装器(例如leveldb-android)来访问它。然后你应该使用迭代器迭代条目,寻找你需要的条目。在我的情况下,调用get()返回null