我有一个可以在我的Android WebView
上运行的Web应用程序,但没有问题。
这是我的Android应用启动码:
public class MainActivity extends Activity {
WebView webView;
private String urlAddress = "http://www.YourDomainName.com/TheLoginPage";
private String loadingTxt = "Loading";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toast loadingMsg = Toast.makeText(this,
loadingTxt, Toast.LENGTH_SHORT);
loadingMsg.show();
webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(urlAddress);
webView.setWebViewClient(new myWebViewClient());
webView.setInitialScale(1);
webView.getSettings().setUseWideViewPort(true);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
if (webView.canGoBack()) {
webView.goBack();
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
每件事都有效。
我的问题: WebView中的默认开始页面是Web应用程序登录页面。成功登录后,我想阻止(内置) GO BACK 按钮,以便在我成功登录后返回到默认的起始页面(登录页面)?
注意:我仍然会将 GO BACK 按钮用于其他网络应用程序,或者如果我再次退出。
答案 0 :(得分:2)
在这里我是如何解决的,我添加了if equals
语句来比较登录过程后页面的URL与WebView URL,如果它们相同则不允许GO BACK并显示消息“You登录“,这样我就防止了GO BACK。这是代码,它适用于我:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
String url = new String("http://www.YourDomainName.com/PageAfterSuccessfulLogin");
String webUrl = new String(webView.getUrl());
if (url.equals(webUrl)) {
Toast.makeText(this, "You are logged in",
Toast.LENGTH_SHORT).show();
} else {
if (webView.canGoBack()) {
Toast.makeText(this, "Back",
Toast.LENGTH_SHORT).show();
webView.goBack();
}
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
答案 1 :(得分:1)
感谢maytham-maytham,它很有魅力。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
String url = new String("https://www.domain name.com/index.php?logged=login%20successfully");
String webUrl = new String(webView.getUrl());
if (url.equals(webUrl)) {
Toast.makeText(this, "You are logged in",
Toast.LENGTH_SHORT).show();
}
else {
url = new String("https://www.domain name.com/main.php");
webUrl = new String(webView.getUrl());
if (url.equals(webUrl)) {
Toast.makeText(this, "Access Denied",
Toast.LENGTH_SHORT).show();
}
else
if (webView.canGoBack()) {
Toast.makeText(this, "Back",
Toast.LENGTH_SHORT);
webView.goBack();
}
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
答案 2 :(得分:0)
您希望禁用后退按钮的活动 - 请执行此操作
@Override
public void onBackPressed(){
return;
}
您必须将其添加为全局函数。
在你的情况下,你希望你的后退按钮在某些情况下工作,而不是在某些情况下工作 -
您可以在onBackPressed()
if(BackButton_Dont_Work_Condition)
return
else
super.onBackPressed()