我不太确定如何解决这个问题,就像我迄今为止所尝试过的那样,失败了。
正如您在附加图片中看到的,大多数应用程序包含一个webview和Javascript控制用户在app中的移动(在Webview中)。
应用程序从活动A开始,然后转到活动B(如步骤3中所示),打开设备相机,然后用户单击照片。
点击照片后,我需要将用户带回webview。我还需要知道用户是否点击了任何图像(因此,我需要将活动B中的内容传递给活动A,一旦我弄清楚如何进入webview,这不是什么大问题。)
我试过了
setContentView(R.layout.activity_A);
将控制权移回活动A,活动A返回带有textview和webview的活动但是webview为空。
我也尝试了webView.saveState
和webView.restoreState
,但这也行不通。但是,当我跳过活动时,我不确定我是否正确实施了它。
所以,我需要有人指导我如何回到webview(在进入活动B之前需要与用户保持相同的状态)。一直坚持这个问题的时间比我想承认的要长得多。
问题的图解说明是here。 - Imgur Link(SO不允许我在这里发布图片)
WebView活动代码:
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();
}
}
答案 0 :(得分:0)
听起来您正在尝试拍摄照片并显示结果来自Documentation
您可以向Android系统发送图像请求
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
然后你处理相机的结果
@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);
}
}
修改强>
点击结果可以使用FLAG_ACTIVITY_CELAR_TOP
发送到ActivityAIntent intent = new Intent(this, ActivityA.class)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
.putExtra(EXTRA_IMAGE_CLICKED, true);
startActivity(intent);
当您离开时返回ActivityA并致电onNetIntent,让您检查标志
@Override
protected void onNewIntent (Intent intent) {
boolean imageWasClicked = intent.getBooleanExtra(EXTRA_IMAGE_CLICKED, false);