三星Galaxy S3默认启用“不要保持活动”(两个位置的测试模型都出现了这个故障)
当然这意味着只要启动任何其他活动,包括来自您的Cordova / PhoneGap应用程序,您的应用程序的主要活动将被销毁。任何回调事件显然都不会发生。
关闭此选项可解决问题。
检查开发者选项,无论品牌/型号如何,例如华硕Nexus 7平板电脑没有此默认设置。
我已经设置了一个基本的测试应用。其中有一个按钮和一个img标签+未经修改的Cordova index.js
按钮onclick正在调用capturePhoto()
:
function onPhotoURISuccess(imageURI) {
console.log(imageURI);
var largeImage = document.getElementById('largeImage');
largeImage.style.display = 'block';
largeImage.src = imageURI;
}
function capturePhoto() {
navigator.camera.getPicture( onPhotoURISuccess, onFail,
{ quality: 20, allowEdit: true, destinationType: Camera.DestinationType.FILE_URI });
}
function onFail(message) {
alert('Failed because: ' + message);
}
当我在模拟器上以及在华硕Nexus 7平板电脑上运行应用程序时,相机会按预期打开,允许拍摄并确认照片,然后使用FILE_URI返回并设置图像src
属性。
然而,在三星Galaxy SIII上,(我们正在两个不同的位置进行测试)相机打开,允许捕获,并在确认后,尝试恢复测试应用程序并死亡。
有没有人知道这个问题,有没有办法解决它?
仅供参考,我在AndroidManifest.xml
活动节点添加了一个额外的设置:android:screenOrientation="nosensor"
- 虽然这并没有解决问题(抓住这里的稻草。)
测试版本的phonegap - 1.8 - 2.4rc(全部崩溃或无法返回图像。)
堆栈跟踪的相关部分位于:http://pastie.org/5974920
使用quality : 100
与以前相同的结果。
没有工作。
答案 0 :(得分:7)
在三星Galaxy 3上,开发人员选项不保持活动默认开启。
当您启动任何其他活动时,这将垃圾收集您的主要活动,在这种情况下是相机。
关闭选项可以解决问题。
答案 1 :(得分:2)
我有三星Galaxy Note II。我有同样的问题。我在AndroidManifest.xml中对此进行了更改,现在它适用于Samsung和HTC Thunderbolt
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="10"/>
<activity android:configChanges="orientation|keyboardHidden" />
答案 2 :(得分:1)
您是否关闭了后台进程?如果是这样,这将打破所有Android相机。在intent中传回的数据不能为null。
此外,请务必将此添加到Android Manifest:
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
2.4.x崩溃的事实是一个错误,因为在这种情况下破坏了处理恢复状态的事情,但事实是你需要后台进程将数据从一个意图传递到另一个意图,否则这不会适用于任何Android应用程序。我们至少开始优雅地处理这种情况。我认为应用程序关闭可能是一个错误,所以我有兴趣在这里看到一张票:https://issues.apache.org/jira/browse/CB