对于HTML5 - Jquery Mobile Android应用,我使用本机代码访问相机。我成功地从相机中获取图像并在我的本地网页上显示。我遇到的问题是,当相机意图关闭我的网页似乎第二次重新打开自己这次只是这次javascript没有执行。当我按下设备上的后退按钮时,我再次被重定向到右侧页面。
如何防止我的网页开放两次?
我正在使用以下代码访问我的相机:
mWebView.addJavascriptInterface(new Object() {
@SuppressLint("SimpleDateFormat")
public void performClick() {
Intent cameraIntent = new Intent(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
String timeStamp = new SimpleDateFormat("yyyy.MM.dd_HH.mm.ss")
.format(new Date());
IMG = new File(APP_LOCATION + File.separator + "images",
timeStamp + ".jpg");
IMG_LOCATION = Uri.fromFile(IMG);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, IMG_LOCATION);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
}
}, "openCamera");
@SuppressLint("SimpleDateFormat")
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CAMERA_PIC_REQUEST) {
if (resultCode == RESULT_OK) {
if (data != null) {
storeImage(data.getData(), IMG);
} else {
storeImage(IMG_LOCATION, IMG);
}
// Call JavaScript function to display image on the webpage
mWebView.loadUrl("javascript:setImage(\"" + IMG_LOCATION
+ "\")");
}
}
}
答案 0 :(得分:0)
将其添加到清单文件
中的活动代码中android:configChanges="orientation|keyboardHidden"
答案 1 :(得分:0)
似乎它不喜欢从onActivityResult调用javascript。使用以下代替简单的loadUrl调用:
// Call JavaScript function to display image on the webpage
RunOnUiThread(new Java.Lang.Runnable(() =>
@Override
public void run() {
mWebView.loadUrl("javascript:setImage(\"" + IMG_LOCATION
+ "\")");
}
});