我正在尝试使用以下方法在Android上创建文件:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}
function gotFS(fileSystem) {
fileSystem.root.getFile("example.txt", {
create: true
}, gotFileEntry, fail);
}
function gotFileEntry(fileEntry) {
fileEntry.createWriter(gotFileWriter, fail);
}
function gotFileWriter(writer) {
writer.onwriteend = function(evt) {
console.log("contents of file now 'some sample text'");
writer.truncate(11);
writer.onwriteend = function(evt) {
console.log("contents of file now 'some sample'");
writer.seek(4);
writer.write(" different text");
writer.onwriteend = function(evt) {
console.log("contents of file now 'some different text'");
}
};
};
writer.write("some sample text");
}
function fail(error) {
console.log(error.code);
}
此代码在iOS上正常工作,我可以在Documents文件夹中看到创建的文件。但是在Android上我没有看到任何文件。
我添加了所有插件。我还按顺序采取了以下步骤
添加插件 cordova插件添加org.apache.cordova.file cordova插件添加org.apache.file-transfer
从我的应用程序中编译和构建android cordova编译android cordova build android
此外,我的配置文件还包含以下条目:
<name>Hello Cordova</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<access origin="*"/>
<content src="index.html" />
<!-- Preferences for iOS -->
<preference name="AllowInlineMediaPlayback" value="false" />
<preference name="AutoHideSplashScreen" value="true" />
<preference name="BackupWebStorage" value="cloud" />
<preference name="DisallowOverscroll" value="false" />
<preference name="EnableLocation" value="false" /><!-- DEPRECATED -->
<preference name="EnableViewportScale" value="false" />
<preference name="FadeSplashScreen" value="true" />
<preference name="FadeSplashScreenDuration" value=".25" />
<preference name="HideKeyboardFormAccessoryBar" value="false" />
<preference name="KeyboardDisplayRequiresUserAction" value="true" />
<preference name="KeyboardShrinksView" value="false" />
<preference name="MediaPlaybackRequiresUserAction" value="false" />
<preference name="ShowSplashScreenSpinner" value="true" />
<preference name="SuppressesIncrementalRendering" value="false" />
<preference name="TopActivityIndicator" value="gray" />
<preference name="iosPersistentFileLocation" value="Library" />
<feature name="Geolocation">
<param name="ios-package" value="CDVLocation"/>
</feature>
<feature name="Device">
<param name="ios-package" value="CDVDevice"/>
</feature>
<feature name="Accelerometer">
<param name="ios-package" value="CDVAccelerometer"/>
</feature>
<feature name="Compass">
<param name="ios-package" value="CDVLocation"/>
</feature>
<feature name="Media">
<param name="ios-package" value="CDVSound"/>
</feature>
<feature name="Camera">
<param name="ios-package" value="CDVCamera"/>
</feature>
<feature name="Contacts">
<param name="ios-package" value="CDVContacts"/>
</feature>
<feature name="File">
<param name="ios-package" value="CDVFile"/>
</feature>
<feature name="NetworkStatus">
<param name="ios-package" value="CDVConnection"/>
</feature>
<feature name="Notification">
<param name="ios-package" value="CDVNotification"/>
</feature>
<feature name="FileTransfer">
<param name="ios-package" value="CDVFileTransfer"/>
</feature>
<feature name="Capture">
<param name="ios-package" value="CDVCapture"/>
</feature>
<feature name="Battery">
<param name="ios-package" value="CDVBattery"/>
</feature>
<feature name="SplashScreen">
<param name="ios-package" value="CDVSplashScreen"/>
</feature>
<feature name="Echo">
<param name="ios-package" value="CDVEcho"/>
</feature>
<feature name="Globalization">
<param name="ios-package" value="CDVGlobalization"/>
</feature>
<feature name="InAppBrowser">
<param name="ios-package" value="CDVInAppBrowser"/>
</feature>
<feature name="Logger">
<param name="ios-package" value="CDVLogger"/>
</feature>
<feature name="LocalStorage">
<param name="ios-package" value="CDVLocalStorage"/>
</feature>
<feature name="File">
<param name="android-package" value="org.apache.cordova.file.FileUtils" />
</feature>
<feature name="FileTransfer">
<param name="android-package" value="org.apache.cordova.filetransfer.FileTransfer" />
</feature>
<!-- Deprecated plugins element. REmove in 3.0 -->
<plugins>
</plugins>
我的Android清单文件中包含必要的权限:
以下是我的Cordova版本:3.5.0-0.2.6
在iOS上一切正常。在Android Logcat上出现以下错误:
“Uncaught ReferenceError:LocalFileSystem未定义”,来源:file ?? android_asset / www / app.js
答案 0 :(得分:0)
你不能在同一个config.xml文件中混淆iOS和android。确保在单独的config.xml中设置cordova插件
的iOS
机器人
答案 1 :(得分:0)
基本上是插件的添加方式。我发现在phonegap和cordova网站上发布的文件真的很混乱。我可能不得不关注它们以使其发挥作用。 要在plugins.xml中添加必要的插件信息,您需要遵循以下步骤:
http://docs.phonegap.com/en/2.0.0/cordova_file_file.md.html#File
要更改配置文件,您需要遵循以下步骤:
http://cordova.apache.org/docs/en/3.3.0/cordova_file_file.md.html#File
然后编译并运行。我不确定是否有任何地方可以找到统一的文件。如果您知道任何统一的文件,请告诉我。我正在使用Phonegap 3.5和cordova 3.5版本,并查看旧文档以找出方法