在方法 onBackPressed 中捕获 url
Capture url inside method onBackPressed
如何在触发方法 onBackPressed 时捕获 url?
我已经尝试使用 getUrl() 方法,但它给我带来了我所在页面的 url,而不是我返回的页面.
我需要方法 shouldOverrideUrlLoading 具有的行为,但在 onBackPressed 内部(因为我需要执行相同的条件)。
有办法吗?
PS:我正在使用 WebView。
我的Activity:
public class MainActivity extends AppCompatActivity {
private WebView myWebView;
String mosaicUrl = "https://www.mosaicapp.com.br";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myWebView = findViewById(R.id.webview);
myWebView.loadUrl(mosaicUrl);
myWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
CookieSyncManager.getInstance().sync();
}
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
setContentView(R.layout.activity_error);
}
public boolean shouldOverrideUrlLoading(WebView view, String url) {
int slashslash = url.indexOf("//") + 2;
String domain = url.substring(slashslash, url.indexOf('/', slashslash));
ImageView imageview = findViewById(R.id.imageBack);
if (domain.equals("www.mosaicapp.com.br")) {
imageview.setVisibility(View.GONE);
} else {
imageview.setVisibility(View.VISIBLE);
}
return false;
}
});
WebSettings webSettings = myWebView.getSettings();
// Enable JavaScript
webSettings.setJavaScriptEnabled(true);
// Return to Home
ImageView imageBack = findViewById(R.id.imageBack);
imageBack.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
myWebView.loadUrl(mosaicUrl);
}
});
}
@Override
// Detect when the back button is pressed
public void onBackPressed() {
if (myWebView.canGoBack()) {
myWebView.goBack();
} else {
// Let the system handle the back button
super.onBackPressed();
}
}
}
你需要做的是请求 pageFinish,一旦页面加载完成,你必须请求当前 url:
public String currentUrl = "";
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
currentUrl = webView.getUrl();
}
});
这应该可以完成工作。
如何在触发方法 onBackPressed 时捕获 url?
我已经尝试使用 getUrl() 方法,但它给我带来了我所在页面的 url,而不是我返回的页面.
我需要方法 shouldOverrideUrlLoading 具有的行为,但在 onBackPressed 内部(因为我需要执行相同的条件)。
有办法吗?
PS:我正在使用 WebView。
我的Activity:
public class MainActivity extends AppCompatActivity {
private WebView myWebView;
String mosaicUrl = "https://www.mosaicapp.com.br";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myWebView = findViewById(R.id.webview);
myWebView.loadUrl(mosaicUrl);
myWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
CookieSyncManager.getInstance().sync();
}
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
setContentView(R.layout.activity_error);
}
public boolean shouldOverrideUrlLoading(WebView view, String url) {
int slashslash = url.indexOf("//") + 2;
String domain = url.substring(slashslash, url.indexOf('/', slashslash));
ImageView imageview = findViewById(R.id.imageBack);
if (domain.equals("www.mosaicapp.com.br")) {
imageview.setVisibility(View.GONE);
} else {
imageview.setVisibility(View.VISIBLE);
}
return false;
}
});
WebSettings webSettings = myWebView.getSettings();
// Enable JavaScript
webSettings.setJavaScriptEnabled(true);
// Return to Home
ImageView imageBack = findViewById(R.id.imageBack);
imageBack.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
myWebView.loadUrl(mosaicUrl);
}
});
}
@Override
// Detect when the back button is pressed
public void onBackPressed() {
if (myWebView.canGoBack()) {
myWebView.goBack();
} else {
// Let the system handle the back button
super.onBackPressed();
}
}
}
你需要做的是请求 pageFinish,一旦页面加载完成,你必须请求当前 url:
public String currentUrl = "";
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
currentUrl = webView.getUrl();
}
});
这应该可以完成工作。