2012-08-03 2 views
1

Android 및 iOS에서 올바르게 작동하지만 현재 BlackBerry (OS 6.0 이상)에서 작동하지 않는 앱이 있습니다. 앱은 3 가지 맛을 모두 다루기 위해 사용되었지만 일부 자바 스크립트에 약간의 변경이있을 때마다 앱을 다시 게시하는 대신 앱을 동적으로 다운로드하도록 업데이트 한 이후 앱은 getDirectory 기능을 통과하지 못합니다. Cordova 1.8.1을 사용하고 있습니다. 나는 getDirectory 호출 (GotFS 기능)에서 1의 오류 코드를 얻을 수PhoneGap/Cordova getDirectory가 BlackBerry에서 실패합니다.

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)); 
} 

: 여기

장치가 준비되면 실행 내 자바 스크립트 코드의 시작 부분입니다. 테스트 할 추가 주석을 추가했습니다. = "" fileSystem.root.fullPath = '파일 : /// 저장'

파일 시스템 = '지속' fileSystem.root.name :

나는에 대한 설명서를 확인했지만 여기에 내가 무엇을 알고있다 코르도바 here 여기 here하고 ... 난 다른 정보 중 내 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> 

에있을 것입니다 그리고 여기 내 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의 액세스 권한에 문제가있는 것처럼 단순한 문제 일 뿐이라고 생각합니다. 그러나 다양한 다른 것들을 시도하고 인터넷을 통해 검색 한 후에, 나는 완전히 곤란합니다 ...

도움을 주시면 감사하겠습니다.

답변

2

코드가 올바른 것 같습니다.

BlackBerry가 USB에 연결되어 있고 "USB 드라이브"화면에서 메시지가 나타나면 장치 비밀번호를 입력하면 '매스 미디어/저장 모드'가 활성화되었을 것입니다. 이렇게하면 파일 시스템이 USB로 잠겨 앱이 액세스하지 못하게됩니다. fileSystem.root.getDirectory를 호출 할 때 오류가 표시 될 것으로 예상됩니다.

+0

시뮬레이터에서 실행하는 것은 어떻습니까? 나는 거기에서 같은 문제를 겪고있다. – mason81

+0

나는이 대답을 받아 들일 것이다.내 문제는 해결되지 않지만 "전송"옵션이 BlackBerry 장치에서 지원되지 않는다는 사실을 알게되었으므로 어쨌든 파일을 읽을 수 있을지는 중요하지 않습니다. 동적으로, 나는 분명히 Cordova/Phonegap으로 할 수 없다. 답변을 드릴 시간과 도움이되는 팁을 보내 주셔서 감사합니다. – mason81

2

나는 이것도 너무 재미있어. 이 오류가 발생하는 데에는 여러 가지 이유가 있다고 확신합니다.

그러나 USB 케이블을 연결하면 Blackberry가 로컬 저장소 및 SD 카드에 액세스하지 못했습니다. 개발시 유용하지 않으며 몇 가지 의미있는 오류 코드가 BB에 도움이되었을 것입니다!

다른 사람이 도움이되기를 바랍니다. 블랙 베리 10의 경우

1

, 코르도바/WebWorks이 시도 않습니다

window.webkitRequestFileSystem(window.PERSISTENT, 5*1024*1024, onSuccess, null); 

대신 코르도바의 구현 : 나를 위해 일한 지금은 조건이

window.requestFileSystem(LocalFileSystem.PERSISTENT, 5*1024*1024, onSuccess, null); 

위 중 하나를 실행하는 데 블랙 베리/기타. 다행히도 그것은 나를 위해했던 것처럼 당신을 위해 작동합니다.

건배