0

对于 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
                    + "\")");
        }
    } 
}
4

2 回答 2

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
            + "\")"); 
    }
}); 
于 2013-11-07T22:41:58.443 回答
0

将此添加到清单文件中的活动标签

android:configChanges="orientation|keyboardHidden"
于 2013-05-21T10:10:42.653 回答