编辑:
对于那些现在看到这个的人,我们已经解决了这个问题。有关解释和可能的解决方案,请参阅我对这个问题和这个问题的回答。
好吧,我以为我已经解决了这个问题,但我没有。
发生的事情与在 Android 中启动相机很常见:一旦您拍照,内存需求会导致系统终止启动相机的应用程序。我的困难是,在我的应用程序被杀死后,我无法获取最近捕获的图像的 URI。我在搜索中看到了很多针对本机 Android 应用程序的解决方案,但对于 Phonegap 却没有。
由于相机开始的页面不是活动默认加载到的页面这一事实,这使情况变得更加复杂。当应用重启时,它想在这个应用的登录页面重启,而不是需要图片数据的URI的页面。
我让应用程序在它死之前保存它所在的最后一页,并在它启动时回想一下。我认为这会解决问题,但相机的回调仍然没有被调用。这可能是因为即使它返回到同一页面,它也返回到该页面的不同实例。
让我向您展示我到目前为止所拥有的。
这是调用相机的代码:
function capturePhoto(){
navigator.camera.getPicture(onPhotoURISuccess, onFail,
{ quality: 20, destinationType: Camera.DestinationType.FILE_URI } );
};
function onPhotoURISuccess(imageURI) {
//Do some stuff with the image, like save the URI in localStorage
}
很基本,没什么特别的。只是 onPhotoURISuccess() 永远不会被调用。这是我保存和重新加载最后一页的方法。这一切都是在 DroidGap 活动中用 Java 完成的:
//Save the last page that the user was on
@Override
public void onSaveInstanceState(Bundle savedState) {
super.onSaveInstanceState(savedState);
savedState.putString("lastPage", appView.getUrl());
}
//Recall the page
@Override
public void onCreate(Bundle savedState) {
super.onCreate(savedState);
//The default page is the login page
String pageToLoad = "file:///android_asset/www/login.html";
if(savedState != null && savedState.containsKey("lastPage")) {
pageToLoad = savedState.getString("lastPage");
}
super.loadUrl(pageToLoad);
}
所以,到目前为止,我的想法是在 DroidGap 活动中以某种方式从相机中获取 onActivityResult,但我不确定它是如何工作的,我宁愿不为它创建一个 Phonegap 插件,因为我想保留代码尽可能跨平台。
另一个想法是从Phonegap 以某种方式告诉相机相对于应用程序的目录将图片保存在哪里。然后,需要图片的页面就可以抓取指定目录中的任何一张图片。但是,我还没有找到一种方法来做到这一点。
抱歉,如果我在搜索中忽略了某些内容,这是一个重复的问题,在此先感谢您的帮助!