在我的 Android 应用程序的登录屏幕 (LoginActivity) 中,有一个“注册”按钮,可将用户带到 WebView 中显示的注册网页(在 SignupActivity 中)。用户注册后(即单击“CreateAccount”按钮),我想将他们带回 LoginActivity。
我当前的代码如下。它在第一次安装应用程序时有效,但在第二次重复该过程后,if/else 子句根本不会触发(既没有显示日志也没有发生重定向)。为什么?
public class SignupActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("SignupActivity", "Signup Activity started");
WebView webView = new WebView(this);
setContentView(webView);
webView.setWebViewClient(new MyWebViewClient());
webView.loadUrl("https://commons.m.wikimedia.org/w/index.php?title=Special:CreateAccount&returnto=Main+Page&returntoquery=welcome%3Dyes");
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.equals("https://commons.m.wikimedia.org/w/index.php?title=Main_Page&welcome=yes")) {
// Signup success, so load LoginActivity again
Log.d("SignupActivity", "Overriding URL");
CookieSyncManager.createInstance(getApplicationContext());
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
cookieManager.setAcceptCookie(false);
cookieManager.removeSessionCookie();
Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
startActivity(intent);
return true;
} else {
Log.d("SignupActivity", "Not overriding URL, URL is: " + Uri.parse(url).getHost());
return false;
}
}
}
在 LoginActivity 中,我将此方法附加到按钮点击:
//Called when Sign Up button is clicked
public void signUp(View view) {
Intent intent = new Intent(this, SignupActivity.class);
startActivity(intent);
}
但是我是 WebView 的新手,所以我很乐意在必要时更改此设置。
最佳答案
你应该简单地覆盖 shouldOverrideUrlLoading WebViewClient 中的方法。然后当用户注册时,它应该被重定向到一个成功页面。所以你知道成功的 url 是 https://www.example.com/success
。在您的 shouldOverrideUrlLoading
中检查要加载的 url 是否为成功 URL。如果是,那么就完成这个 Activity ,然后做任何你想做的事。
编辑:
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d("SignupActivity", "Loading URL: " + url);
if (url.equals("https://commons.m.wikimedia.org/w/index.php?title=Main_Page&welcome=yes")) {
// Signup success, so load LoginActivity again
Log.d("SignupActivity", "Overriding URL");
Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
startActivity(intent);
return true;
} else {
Log.d("SignupActivity", "Not overriding URL, URL is: " + Uri.parse(url).getHost());
return false;
}
}
}
关于android - 从 WebView 加载 Activity - 第一次安装应用程序但之后就不行了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38781890/