6

在 Windows 上使用 Phonegap 3.0,Android 平台,在 Eclipse 中调试。

我能够编译我的旧应用程序,但是当我尝试使用现在是插件的功能时遇到了一个新问题。

我已经通过 CLI 工具添加了我需要的所有插件,并将“功能”数据添加到 config.xml 文件中,所以我假设它们可以被调用。权限也在清单文件中设置。

文件传输

我看到 3.0 的文件传输 API 示例代码没有更改,所以我在代码中保留了相同的调用。所以文件将下载,但随后我收到一个错误,导致我的应用程序崩溃

"
D/CordovaLog(12883): file:///android_asset/www/phonegap.js: Line 932 : Uncaught Error: Error calling method on NPObject!
"

我对这个错误进行了一些搜索,但似乎没有标准解决方案?

也许有一种新方法可以调用插件中的功能?因为我也无法播放音频文件而不会出错。声音文件会播放,但会导致错误。

"
09-01 20:13:17.274: W/PluginManager(13279): THREAD WARNING: exec() call to Media.startPlayingAudio blocked the main thread for 23ms. Plugin should use CordovaInterface.getThreadPool().
"

我重新阅读了媒体 API,没有提到线程池。我正在用 javascript 进行所有编程。

基本上,无论我在哪里使用插件功能,该应用程序都会出现重大错误。我尝试在我以前工作的应用程序中使用我的录音功能,当我停止录音时,它会引发错误

"
09-01 20:10:04.206: E/AudioPlayer(13279): FAILED renaming /mnt/sdcard/tmprecording.3gp to /sdsub/myapp/Recorded/myRecording.amr
"

我通过我的文件删除功能再次测试了文件传输api,它也失败了

"
09-01 20:16:00.884: W/PluginManager(13279): THREAD WARNING: exec() call to File.remove blocked the main thread for 19ms. Plugin should use CordovaInterface.getThreadPool().
"

似乎功能工作方式的本质发生了变化,但在任何地方都没有记录。API 调用似乎与旧版本没有变化,只是安装 API 功能的方式不同,但我遵循了该指南并安装了它们。

有没有我错过的新 API 指南?因为 Phonegap API 文档在 3.0 中调用这些功能的方式没有改变。

谢谢。

我的配置文件

<feature name="App">
    <param name="android-package" value="org.apache.cordova.App" />
</feature>
<feature name="NetworkStatus">
    <param name="android-package" value="org.apache.cordova.networkinformation.NetworkManager" />
</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>
<feature name="Media">
    <param name="android-package" value="org.apache.cordova.media.AudioHandler" />
</feature>
<feature name="Notification">
    <param name="android-package" value="org.apache.cordova.dialogs.Notification" />
</feature>
<feature name="SplashScreen">
    <param name="android-package" value="org.apache.cordova.splashscreen.SplashScreen" />
</feature>
<feature name="Compass">
    <param name="android-package" value="org.apache.cordova.deviceorientation.CompassListener" />
</feature>

我的清单文件

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.INTERNET" />
4

1 回答 1

0

在升级应用程序时,该phonegap.js文件必须支持所有功能脚本。您也可以使用合适版本的 javascript 文件phonegap.0.9.5.js或更高版本。这可能是因为 phonegap.js 没有包含应用程序所需的必要功能。如果您看到 API,他们有 phonegap .XYZjs 。所以你可以尝试更高的

于 2014-03-18T03:59:31.740 回答