execuse my english ... Я пытаюсь написать кросс-платформу Webapp изначально только для платформы Android. Я должен писать и читать файлы в Файловой системе мобильного телефона. Я уже видел, что пакет rikulo_gap не поддерживает API файловой системы. API-интерфейс файловой системы, используемый Rikulo, - that one, который, конечно же, не работает на мобильной платформе.Как использовать API файловой системы Cordova/Phonegap с Rikulo?
Итак, я видел, что Js-Package Rikulo должен сделать мой Dart-Code совместимым с моим Cordova.js-файлом (v4.0.0), который включает глобальную функцию requestFileSystem (постоянство, размер, успех-функционирование, сбой -funct). Теперь я пытался сделать мой код работает, но я не получаю файлсистему обратно - я получаю сообщение об ошибке ...
Вот мой Dart-код:
import 'package:rikulo_gap/device.dart';
import 'dart:js' as js;
void main() {
Device.init().then((device) => onDeviceReady(device)).
catchError((ex) => print("AN ERROR OCCURED: " + ex.toString()));
}
void onDeviceReady(device) {
var persistent = js.context['PERSISTENT'];
print("Should be Constant PERSISTENT of LFS: " + persistent.toString());
var fsName = js.context.callMethod('requestFileSystem',[persistent,0,dofs,fail]);
}
void dofs(fs) {
print("Success");
var myFs = js.context[fs];
print("The Return of RequestFileSystem is a: " + myFs.toString());
}
LogCat говорит:
10-23 18:08:32.589: D/CordovaLog(951): file:///android_asset/www/adam.dart.js: Line 12111 : Should be Constant PERSISTENT of LFS: 1
10-23 18:08:32.624: D/CordovaLog(951): file:///android_asset/www/adam.dart.js: Line 12111 : Success
10-23 18:08:32.649: D/CordovaLog(951): file:///android_asset/www/cordova.js: Line 1060 : processMessage failed: Stack: Error
10-23 18:08:32.649: D/CordovaLog(951): at dart.wrapException (file:///android_asset/www/adam.dart.js:2520:15)
10-23 18:08:32.649: D/CordovaLog(951): at JsObject.$index (file:///android_asset/www/adam.dart.js:11549:17)
10-23 18:08:32.649: D/CordovaLog(951): at dart.J.$index$asx (file:///android_asset/www/adam.dart.js:19278:41)
10-23 18:08:32.649: D/CordovaLog(951): at dofs (file:///android_asset/www/adam.dart.js:4185:7)
10-23 18:08:32.649: D/CordovaLog(951): at dart.Primitives_applyFunction (file:///android_asset/www/adam.dart.js:2489:23)
10-23 18:08:32.649: D/CordovaLog(951): at _callDartFunction (file:///android_asset/www/adam.dart.js:11464:29)
10-23 18:08:32.649: D/CordovaLog(951): at file:///android_asset/www/adam.dart.js:11671:18
10-23 18:08:32.649: D/CordovaLog(951): at file:///android_asset/www/plugins/org.apache.cordova.file/www/requestFileSystem.js:52:25
10-23 18:08:32.649: D/CordovaLog(951): at success (file:///android_asset/www/plugins/org.apache.cordova.file/www/fileSystems-roots.js:40:13)
10-23 18:08:32.649: D/CordovaLog(951): at Object.cordova.callbackFromNative (file:///android_asset/www/cordova.js:293:54)
10-23 18:08:32.649: D/CordovaLog(951): file:///android_asset/www/cordova.js: Line 1061 : processMessage failed: Message: S01 File1158866550 [{"fullPath":"\/","filesystemName":"temporary","isDirectory":true,"nativeURL":"file:\/\/\/storage\/emulated\/0\/Android\/data\/de.htwg.myAndroid\/cache\/","filesystem":0,"isFile":false,"name":""},{"fullPath":"\/","filesystemName":"persistent","isDirectory":true,"nativeURL":"file:\/\/\/storage\/emulated\/0\/","filesystem":1,"isFile":false,"name":""},{"fullPath":"\/","filesystemName":"content","isDirectory":true,"nativeURL":"cdvfile:\/\/localhost\/content\/","filesystem":1,"isFile":false,"name":""},{"fullPath":"\/","filesystemName":"files","isDirectory":true,"nativeURL":"file:\/\/\/data\/data\/de.htwg.myAndroid\/files\/","filesystem":1,"isFile":false,"name":""},{"fullPath":"\/","filesystemName":"files-external","isDirectory":true,"nativeURL":"file:\/\/\/storage\/emulated\/0\/Android\/data\/de.htwg.myAndroid\/files\/","filesystem":1,"isFile":false,"name":""},{"fullPath":"\/","filesystemName":"documents","isDirectory":true,"nativeURL":"file:\/\/\/data\/data\/de.htwg.myAndroid\/files\/Documents\/","filesystem":1,"isFile":false,"name":""},{"fullPath":"\/","filesystemName":"sdcard","isDirectory":true,"nativeURL":"file:\/\/\/storage\/emulated\/0\/","filesystem":1,"isFile":false,"name":""},{"fullPath":"\/","filesystemName":"cache","isDirectory":true,"nativeURL":"file:\/\/\/data\/data\/de.htwg.myAndroid\/cache\/","filesystem":1,"isFile":false,"name":""},{"fullPath":"\/","filesystemName":"cache-external","isDirectory":true,"nativeURL":"file:\/\/\/storage\/emulated\/0\/Android\/data\/de.htwg.myAndroid\/cache\/","filesystem":1,"isFile":false,"name":""},{"fullPath":"\/","filesystemName":"root","isDirectory":true,"nativeURL":"file:\/\/\/","filesystem":1,"isFile":false,"name":""}]
что меня раздражает в том, что первое исключение на стеке является dart.wrapException, поэтому я предполагаю, что это вообще Dart <> проблема Js Interop.
Я следовал официальной инструкции cordova для Building with Android и в настоящее время я строю с Windows CommandLine с cordova run android
. (И да, я уже установлены плагины (File, FileUtil, устройство через CommandLine и они будут добавлены к проекту)
Так может кто-нибудь сказать мне:.
- Является ли это, как я думаю, и есть не обычный способ использовать Cordova-Filesystem API с Rikulo/Dart?
- Если 1. правда, есть обходной путь? Кто-нибудь идея, свободная нота Одер что-нибудь другое, что может мне помочь?