【问题标题】:Unable to create/write to a file on Android Phonegap无法在 Android Phonegap 上创建/写入文件
【发布时间】:2014-08-04 21:24:48
【问题描述】:

我正在尝试使用以下方法在 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 上我看不到任何文件。

我已经添加了所有插件。我也按顺序采取了以下步骤

  1. 添加插件 科尔多瓦插件添加 org.apache.cordova.file cordova 插件添加 org.apache.file-transfer

  2. 从我的应用程序中编译和构建 android 科尔多瓦编译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 is not defined”,来源:file??android_asset/www/app.js

【问题讨论】:

    标签: android cordova phonegap-plugins


    【解决方案1】:

    您不能在同一个 config.xml 文件中混淆 iOS 和 android。确保在单独的 config.xml 中设置 cordova 插件

    iOS

    安卓

    【讨论】:

    【解决方案2】:

    这基本上是在添加插件的方式。我发现 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 版本并查看旧文档以找出方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-07
      • 2020-07-15
      相关资源
      最近更新 更多