首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从活动返回到WebView?

如何从活动返回到WebView?
EN

Stack Overflow用户
提问于 2015-04-02 17:39:05
回答 1查看 875关注 0票数 0

我不太清楚该怎么做,因为我一直在尝试,但都失败了。

正如你在附图中所看到的,大部分应用程序由一个webview和Javascript组成,控制用户在应用程序中的移动(在Webview中)。

该应用程序从活动A开始,然后转移到活动B(如您在步骤3中所看到的),在那里打开设备摄像机,然后用户单击照片。

在照片被点击后,我需要带用户返回到webview。我还需要知道用户是否点击了任何图片(因此,我需要将一些东西从活动B传递到活动A,这在我知道如何到达webview之后并不是什么大问题)。

我试过了

代码语言:javascript
运行
复制
setContentView(R.layout.activity_A);

它将控制权带回活动A,后者返回带有textview和webview的活动,但webview则为空。

我也尝试过webView.saveStatewebView.restoreState,但这也不起作用。然而,由于我正在跳过活动,我不确定我是否正确地实现了它。

因此,我需要有人指导我如何回到webview (它需要处于与用户在进入活动B之前离开它的状态相同)。比我想承认的时间更久了。

这个问题的图形说明是这里。- Imgur (所以不让我在这里发布图片)

WebView活动代码:

代码语言:javascript
运行
复制
public class SpeditionActivity extends Activity {
private static String show = null;
AtomicBoolean isScanning=new AtomicBoolean(false);

@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.activity_audition);

    TextView textView = (TextView) findViewById(R.id.textView);
    textView.setText("Messages will appear here...");

    String page = "<html>"
            + "<head>"
            + "<script type='text/javascript' src='file:///android_asset/jquery.js'></script>"
            + "<script type='text/javascript' src='file:///android_asset/audition.js'></script>"
            + "<link rel='stylesheet' type='text/css' href='file:///android_asset/style.css'>"
            + "</head>" + "<body style='margin: 0; padding: 0;'></body>"
            + "</html>";

    final WebView webView = (WebView) findViewById(R.id.webView);
    webView.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if(keyCode == KeyEvent.KEYCODE_BACK) {
                Log.d("Back Button", "Back button clicked..");
                webView.loadUrl("javascript:(function() { backKey(); })()");
                return true;
            }
            return false;
        }   
    });
    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setDomStorageEnabled(true);
    webSettings.setUserAgentString("Audition 1.0");
    webView.addJavascriptInterface(new AuditionJs(this), "Audition");

    webView.loadDataWithBaseURL("http://www.url.com/audition", page,
            "text/html", "UTF-8", null);
    webView.setWebChromeClient(new WebChromeClient() {
        @SuppressWarnings("deprecation")
        public void onExceededDatabaseQuota(String url,
                String databaseIdentifier, long currentQuota,
                long estimatedSize, long totalUsedQuota,
                WebStorage.QuotaUpdater quotaUpdater) {
            quotaUpdater.updateQuota(estimatedSize * 2);
        }
        @Override
        public void onCloseWindow(WebView window) {
            AuditionActivity.this.finish();
        }
}
EN

回答 1

Stack Overflow用户

发布于 2015-04-02 17:48:39

听起来你想要捕捉一张照片并显示来自文档的结果

您可以向Android系统发送图像请求。

代码语言:javascript
运行
复制
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
    startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}

然后你处理摄像机的结果

代码语言:javascript
运行
复制
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
    Bundle extras = data.getExtras();
    Bitmap imageBitmap = (Bitmap) extras.get("data");
    mImageView.setImageBitmap(imageBitmap);
  }
}

编辑

可以使用ActivityA将单击结果发送到顶部

代码语言:javascript
运行
复制
Intent intent = new Intent(this, ActivityA.class)
            .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
            .putExtra(EXTRA_IMAGE_CLICKED, true);
startActivity(intent);

将返回到ActivityA,当您离开它,并调用onNetIntent允许您检查标志

代码语言:javascript
运行
复制
@Override
protected void onNewIntent (Intent intent) {
  boolean imageWasClicked = intent.getBooleanExtra(EXTRA_IMAGE_CLICKED, false);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29419125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档