Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Phonegap/Cordova getDirectory在BlackBerry上失败_Javascript_Blackberry_Cordova_Blackberry Webworks - Fatal编程技术网

Javascript Phonegap/Cordova getDirectory在BlackBerry上失败

Javascript Phonegap/Cordova getDirectory在BlackBerry上失败,javascript,blackberry,cordova,blackberry-webworks,Javascript,Blackberry,Cordova,Blackberry Webworks,我有一个应用程序可以在Android和iOS上正常运行,但目前在黑莓(OS 6.0+)上无法运行。该应用程序过去可以在所有3种版本上运行,但由于将该应用程序转换为动态下载更新(而不是每次对某些Javascript进行微小更改时重新发布该应用程序),该应用程序无法通过getDirectory函数。我正在使用Cordova 1.8.1 下面是我的JavaScript代码的开始部分,在设备准备就绪时执行: function onDeviceReady(){ // get the filesys

我有一个应用程序可以在Android和iOS上正常运行,但目前在黑莓(OS 6.0+)上无法运行。该应用程序过去可以在所有3种版本上运行,但由于将该应用程序转换为动态下载更新(而不是每次对某些Javascript进行微小更改时重新发布该应用程序),该应用程序无法通过getDirectory函数。我正在使用Cordova 1.8.1

下面是我的JavaScript代码的开始部分,在设备准备就绪时执行:

function onDeviceReady(){
    // get the filesystem setup and run the pre-loader (follow the callback road)
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail_FS);
}

function gotFS(fileSystem) {
   fileSystem.root.getDirectory("data", {create: true}, gotDir, fail_GD);   
}

function gotDir(dir) {
    console.log("got dir");
    DATADIR = dir;
    // code for downloading/updating files goes here
    // left out for brevity and lack of relevance at this point
}

function fail_FS(error){
    fail(error,'requestFileSystem');
}

function fail_GD(error){
    fail(error,'getDirectory');
}

function fail(error,call){
    console.log("ERROR: "+call);
    console.log(JSON.stringify(error));
}
我从getDirectory调用(GotFS函数)中得到一个错误代码1。我为测试添加了额外的注释。以下是我所知道的:

文件系统='persistent' fileSystem.root.name=“” fileSystem.root.fullPath=file:///store"

我已经查看了Cordova上的文档,下面是我在config.xml中的内容

<feature id="blackberry.system" required="true" version="1.0.0.0" />
<feature id="org.apache.cordova" required="true" version="1.0.0" />
<feature id="blackberry.find" required="true" version="1.0.0.0" />
<feature id="blackberry.identity" required="true" version="1.0.0.0" />
<feature id="blackberry.pim.Address" required="true" version="1.0.0.0" />
<feature id="blackberry.pim.Contact" required="true" version="1.0.0.0" />
<feature id="blackberry.io.file" required="true" version="1.0.0.0" />
<feature id="blackberry.utils" required="true" version="1.0.0.0" />
<feature id="blackberry.io.dir" required="true" version="1.0.0.0" />
<feature id="blackberry.app" required="true" version="1.0.0.0" />
<feature id="blackberry.app.event" required="true" version="1.0.0.0" />
<feature id="blackberry.system.event" required="true" version="1.0.0.0"/>
<feature id="blackberry.widgetcache" required="true" version="1.0.0.0"/>
<feature id="blackberry.media.camera" />
<feature id="blackberry.invoke" />
<feature id="blackberry.invoke.BrowserArguments" />
<feature id="blackberry.identity" />
<feature id="blackberry.ui.dialog" />
<feature id="blackberry.system" />

<access subdomains="true" uri="file:///store" />
<access subdomains="true" uri="file:///store/data" />
<access subdomains="true" uri="file:///SDCard" />
<access subdomains="true" uri="*" />
<rim:permissions>
    <rim:permit>use_camera</rim:permit>
    <rim:permit>read_device_identifying_information</rim:permit>
    <rim:permit>access_shared</rim:permit>
    <rim:permit>read_geolocation</rim:permit>
</rim:permissions>

使用照相机
读取设备识别信息
访问共享
地理定位
在其他信息中。。。下面是my plugins.xml中的内容:

<plugins>
  <plugin name="App"            value="org.apache.cordova.app.App"/>
  <plugin name="Device"         value="org.apache.cordova.device.Device"/>
  <plugin name="Camera"         value="org.apache.cordova.camera.Camera"/>
  <plugin name="NetworkStatus"  value="org.apache.cordova.network.Network"/>
  <plugin name="Notification"   value="org.apache.cordova.notification.Notification"/>
  <plugin name="Accelerometer"  value="org.apache.cordova.accelerometer.Accelerometer"/>
  <plugin name="Geolocation"    value="org.apache.cordova.geolocation.Geolocation"/>
  <plugin name="File"           value="org.apache.cordova.file.FileManager"/>
  <plugin name="FileTransfer"   value="org.apache.cordova.http.FileTransfer"/>
  <plugin name="Contacts"       value="org.apache.cordova.pim.Contact"/>
  <plugin name="Capture"        value="org.apache.cordova.capture.MediaCapture"/>
  <plugin name="Battery"        value="org.apache.cordova.battery.Battery"/>
  <plugin name="Media"          value="org.apache.cordova.media.Media"/>
  <plugin name="ChildBrowser"   value="org.apache.cordova.plugins.childbrowser.ChildBrowser"/>
</plugins>

我怀疑这只是一个简单的问题(比如我对xml中的访问权限做了一些错误的事情),但是在尝试了各种不同的事情并在互联网上搜索之后,我被难住了


任何帮助都将不胜感激。

您的代码在我看来是正确的


如果您将BlackBerry连接到USB,并在“USB驱动器”屏幕提示时输入设备密码,则您将启用“大众媒体/存储模式”。这会将文件系统锁定到USB,并阻止你的应用程序访问它。我希望您在尝试调用fileSystem.root.getDirectory时会看到一个错误。

您的代码在我看来是正确的


如果您将BlackBerry连接到USB,并在“USB驱动器”屏幕提示时输入设备密码,则您将启用“大众媒体/存储模式”。这会将文件系统锁定到USB,并阻止你的应用程序访问它。我希望您在尝试调用fileSystem.root.getDirectory时会看到一个错误。

在这个问题上我也有很多乐趣。我确信发生这种错误的原因有很多

然而,对我来说,这是黑莓手机在连接USB电缆时剥夺了对本地存储和SD卡的访问权。 在开发时不太有用,一些有意义的错误代码会帮助BB


希望这对其他人有所帮助。

这一次我也玩得很开心。我确信发生这种错误的原因有很多

然而,对我来说,这是黑莓手机在连接USB电缆时剥夺了对本地存储和SD卡的访问权。 在开发时不太有用,一些有意义的错误代码会帮助BB


希望这对其他人有所帮助。

对于blackberry10,Cordova/WebWorks请尝试以下方法:

window.webkitRequestFileSystem(window.PERSISTENT, 5*1024*1024, onSuccess, null);
而不是科尔多瓦的实施:

window.requestFileSystem(LocalFileSystem.PERSISTENT, 5*1024*1024, onSuccess, null);
这对我很有效,现在我有条件触发黑莓/其他手机的上述任何一项。希望它能像对我一样对你们有用


为blackberry10干杯,Cordova/WebWorks尝试一下:

window.webkitRequestFileSystem(window.PERSISTENT, 5*1024*1024, onSuccess, null);
而不是科尔多瓦的实施:

window.requestFileSystem(LocalFileSystem.PERSISTENT, 5*1024*1024, onSuccess, null);
这对我很有效,现在我有条件触发黑莓/其他手机的上述任何一项。希望它能像对我一样对你们有用


干杯

很高兴知道。。。在模拟器中运行怎么样?我在那里遇到了同样的问题。我接受这个答案。这并不能解决我的问题,但我确实发现“传输”选项在黑莓设备上不受支持,所以不管我是否可以读取文件,因为我只是用它作为动态更新文件的一种手段,这显然是Cordova/Phonegap无法做到的。谢谢你花时间回答,也谢谢你的建议。很高兴知道。。。在模拟器中运行怎么样?我在那里遇到了同样的问题。我接受这个答案。这并不能解决我的问题,但我确实发现“传输”选项在黑莓设备上不受支持,所以不管我是否可以读取文件,因为我只是用它作为动态更新文件的一种手段,这显然是Cordova/Phonegap无法做到的。感谢您抽出时间回答,并提供了有用的提示。