黑莓操作系统上的本地存储或类似操作< 6

时间:2011-09-06 13:59:55

标签: blackberry local-storage opendatabase

我正在尝试为能够脱机操作的网络应用找到解决方案。

我很喜欢iOS和Android以及Blackberry OS 6.0及更高版本,因为所有这些都支持localStorage。我可以确定Blackberrys低于操作系统0.6在本地存储信息与openDatabase,但仍然无法找到一种方法使以下能够离线存储数据 -

·Blackberry Curve 8900

·黑莓曲线

·Blackberry Bold 9700

我不介意我最终如何做到这一点,并且非常乐意使用专门针对这些BB的完全不同的设置。

基本上我需要做的就是以任何格式存储数据。我不介意使用键值或更强大的sqllite或simlar。我很难过!

到目前为止,我只是检测设备是否接受本地存储​​ -

<!DOCTYPE html> 
<html>  
  <head>
    <title>Local Storage Test</title>
    <script src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load("jquery", "1.4.1");
    </script>
    <script type="text/javascript">

    function testSupport()
    {
        if (localStorage)
            document.getElementById('content').innerHTML = '<h2 class=\"yes\"><img src=\"http://jealousdesigns.com/webapps/test/tick.png\" /> Yep! This one works (with localStorage)!</h2>';


        if (openDatabase)
            document.getElementById('content').innerHTML = document.getElementById('content').innerHTML + '<h2 class=\"yes\"><img src=\"http://jealousdesigns.com/webapps/test/tick.png\" /> Yep! This one works (with database)!</h2>';
    }        

    </script>
    <style type="text/css">
        body{
            font-size: 20px;
            background: #eee;
            color: #666;
        }
        h2{
            border-radius: 10px;
            -webkit-border-radius: 10px;
            -moz-border-radius: 10px;
            width: 100%;
            background: white;
            text-align: center;
            padding: 20px 0;
        }
        .yes{
            border: 1px solid green;
        }
        .no{
            border: 1px solid red;
        }
    </style>
  </head>
  <body>
    <div id="content">
        <h2 class="no"><img src="http://jealousdesigns.com/webapps/test/x.png" /> Boo. This one doesn't work</h2>
    </div>
    <script>
        testSupport();
    </script>   
  </body>
</html> 

所有这一切都是测试localStorage和openDatabase并显示确认消息。

我非常感谢有关操作系统小于6.0的黑莓设备的一些建议。

谢谢!

2 个答案:

答案 0 :(得分:3)

我知道低于OS6的设备没有本机HTML5支持。我也知道,根据你所说的,你有一些比OS6设备更少的工作,我可以推断出你正在使用一个访问原生API的软件层。

您可以尝试将此框架交换为webworks + javascript工具包。 http://supportforums.blackberry.com/t5/Web-and-WebWorks-Development/Supporting-Gears-using-HTML5-in-BlackBerry-WebWorks-applications/ta-p/557280

我假设这不是你已经使用的那个,因为它没有localstore api。它确实有一个数据库api,它应该具有良好的跨设备支持,因为它是由RIM提供的。

为什么我认为某些OS5手机上会出现此问题,而其他手机却没有?

只有具有eMMC内存的设备可以在其内部存储器中存储SQLite数据库。 这不包括9700,我猜你提到的其他人。 因此,如果SDCard存在,您始终可以选择使用SDCard。

BB存储概述

这是OS5存储概述文档的链接,这是我见过的最佳介绍:

http://www.blackberry.com/developers/docs/5.0.0api/data_storage-summary.html

选项:

  • 文件和文件夹
  • SQLite的
  • 持久存储
  • 运行时存储
  • MIDP RMS存储(记录存储)

eMMC内存参考= Mark Sohm,BlackBerry Development Advisor http://supportforums.blackberry.com/t5/Java-Development/Sqlite-reading-database-from-device-storage-compatibility-list/td-p/764303/highlight/true/page/2

此处还给出了内部存储器类型的解释: http://www.blackberry.com/developers/docs/5.0.0api/data_storage-summary.html#DS_FileSystem

答案 1 :(得分:1)

您好我发现两种算法可以添加对旧浏览器的支持,它在窗口对象中定义属性localStorage,并使用浏览器的缓存

https://developer.mozilla.org/en/DOM/Storage#localStorage

我会检查它