【问题标题】:Local Storage or similar on Blackberry OS < 6.0Blackberry OS < 6.0 上的本地存储或类似设备
【发布时间】:2012-02-09 04:04:03
【问题描述】:

我正在尝试为能够离线运行的网络应用寻找解决方案。

我对 iOS 和 Android 以及 Blackberry OS 6.0 及更高版本很好,因为所有这些都支持 localStorage。我可以让某些低于 OS 0.6 的 Blackberrys 使用 openDatabase 在本地存储信息,但我仍然无法找到一种方法使以下内容能够离线存储数据-

·黑莓曲线8900

· 黑莓曲线

· 黑莓加粗9700

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

基本上我需要做的就是以任何格式存储数据。我不介意必须使用键值或更强大的 sqllite 或类似的。我只是被难住了!

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

<!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 的黑莓设备,我真的很感激。

谢谢!

【问题讨论】:

  • 有些 BB 有一个奇怪的情况,比如 9700,它们无法将 SQLite 数据库保存到其内置内存中,但 SDCard 始终可以正常工作,其他 BB 可以同时保存到两者。这就是你所看到的吗?我不确定这是否是故意的,但我曾经为此浪费了一天中最美好的时光。

标签: blackberry local-storage opendatabase


【解决方案1】:

我知道低于 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 存在,您始终可以选择使用它。

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

【讨论】:

  • 谢谢,这很有帮助。我会通读这些链接,然后回到这里告诉你什么是有效的!
  • 不客气,我添加了另一个最有用的链接。 RIM 的 OS5 数据存储摘要。这包括我错过的另一个选项(运行时存储)和每个选项的示例代码。
  • 事实上,如果其他人有这个问题,我认为这是他们应该阅读的第一个文档。所以我做了相应的编辑。
  • 嗨。我已经浏览了这些链接,但没有提到从 Web 应用程序访问这些存储功能。即通过javascript 操作和输入数据。如果我错了请纠正我??我正在创建一个网络应用程序,而不是本机应用程序。
  • 您是否使用 webapp 框架将您的 javascript 命令转换为本地命令,如果是,是哪一个?还是移动网站?
【解决方案2】:

您好,我找到了两种算法来添加对旧浏览器的支持,它定义了 window 对象中的属性 localStorage,并使用了浏览器的缓存

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

我去看看

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多