我一直在制作一个使用phonegap来使用相机的应用程序。当我通过eclipse通过我的设备测试应用程序时,应用程序启动,一切都在我的手机上运行良好。
一旦我运行phoneGap构建服务并下载并测试应用程序,一切都很有效,除了点击捕获照片或从图书馆获取没有做任何事情。任何想法为什么它会在构建之前工作,而不是在它之后?
删除了代码
答案 0 :(得分:2)
克林特,
首先,为什么:我怀疑你看到Phonegap的实际构建包与Eclipse的结果之间存在差异的原因是你的本地构建将会更慢" (由于包中的调试信息,或者因为来自eclipse的adb进程而在Android设备上的额外权重...等)因此在JS线程试图通过jQuery寻找这些元素之前给出了DOM时间。
当你解决问题时,正确的方法"处理这个问题就是将你的外部var定义保持在它们的位置......
// buttons for capturing and browsing for photo and uploading
var capture_btn; // = $('#capture'); \
var getImg_btn; // = $('#getImg'); > do these later.
var uploadImg_btn; // = $('#uploadImg'); /
然后......
function onDeviceReady() {
// now allocate DOM to buttons
capture_btn = $('#capture'); //
getImg_btn = $('#getImg'); // 'var'less, to keep in global scope
uploadImg_btn = $('#uploadImg'); //
// rest of deviceReady as already written
你显然已经#34;让它运转了#34; (YAY!)但希望这解释了(更详细一点)为什么你会看到实时APK和本地调试之间的不同结果,这个更全面的答案将在未来帮助其他人...... :)
-TTFN和快乐的黑客,
Dx:)
答案 1 :(得分:1)
原来答案很简单。我在DOM加载它们之前调用了相机函数的变量。
// buttons for capturing and browsing for photo and uploading
var capture_btn = $('#capture');
var getImg_btn = $('#getImg');
var uploadImg_btn = $('#uploadImg');
所以它甚至都没有注册点击次数。奇怪的是,它在通过eclipse进行测试时起作用。
我将所有相机控件添加到deviceready事件和中提琴中。它可以正常工作。