android - How to modify url webview in setting screen?
问题描述
User have an activity with account & password (login screen). I have an activity is setting screen (using Webview), it depends on the url (model class Account have loginId & status).
I have a example: account.me/u/mobile/menuloginId={loginId}&from=android&status={1/2}
How to modify url and where is place modify url when login account?
Some code in class setting screen:
public class B2BSettingController extends B2BViewController implements OnClickListener {
public B2BWebView mWebView = null;
public B2BDialogWindow<String> logoutDialog = null;
private B2BWebViewDataLoading mDataLoadingDialogView;
B2BSettingController(B2BMainActivity act, B2BHandler handler) {
super(act, handler);
}
@Override
public void displayContainView() {
turnTo(R.layout.b2b_setting, false, null, false);
}
@Override
public void initView(Map<String, Object> bundle) {
mDataLoadingDialogView = B2BWebViewDataLoading.getInstance(mActivity);
showOtherTitle(this);
B2BShowWitchButton btnStatus = new B2BShowWitchButton();
btnStatus.isShowLogoutButton = true;
showWhichButton(btnStatus);
setTitle(R.string.setting_ok);
mActivity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN |
WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
mWebView = (B2BWebView) mView.findViewById(R.id.sv_setting);
mWebView.setTag(this);
mWebView.requestFocus(View.FOCUS_DOWN);
mWebView.postUrl(MENU_PAGE, EncodingUtils.getBytes("loginId=" + B2BLoginBis.getUserLoginId()
+ "&contractType=" + B2BLoginBis.getUserContractType() + "&autoLoginKey="
+ B2BLoginBis.getUserAutoLoginKey() + "&lang=" + B2BApplication.getLanguage()
+ "&dpi=" + (mActivity.densityDpi >= 240 ? 1 : 0), "base64"));
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
if (errorCode == -2 && !mActivity.isDialogShowing()) {
mActivity.showMessageDialog(mActivity.getString(R.string.no_network_connection));
}
mDataLoadingDialogView.close();
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
mDataLoadingDialogView.show();
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return super.shouldOverrideUrlLoading(view, url);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
mDataLoadingDialogView.close();
}
});
}
Thanks you!
解决方案
You can use shouldOverrideUrlLoading
method of WebViewClient
to catch redirect url
mWebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.equals(something)) {
// Do something
}
return super.shouldOverrideUrlLoading(view, url);
}
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
if (request.getUrl().toString().equals(something)) {
// Do something
}
return super.shouldOverrideUrlLoading(view, request);
}
推荐阅读
- python - 如何在TensorFlow中将多类one-hot张量转换为RGB?
- sql - Django/Postgres:参数化查询不起作用
- reactjs - 如何在 Jest 单元测试中为调用更多异步操作的异步操作模拟多个 get axios 请求?
- r - 行名是十进制数
- excel - 使用嵌套 if 语句删除数据行
- c++ - 在不复制的情况下返回 std::function
- node.js - IBM Watson Speech-to-Text“识别音频”方法?
- java - Java Itext PDF - 我可以更改 AcroFields 的输入行吗?
- c - 将 nodemcu 与 000webhost 数据库连接
- javascript - 在 eventListener 中使用 .replace() 来更改某些文本,但无法正常工作