Làm sao để đổi url webview khi đăng nhập?

android
java

(Nguyễn Huy) #1

Các bạn ơi, mình mới tìm hiểu về Webview trong android nên chưa biết nhiều lắm nên tính nhờ mọi người một cái nho nhỏ. Số là mình có một màn hình setting từ Webview, url của nó như này:

example.com/u/mobile/menuloginId={loginId}&status={1/2}

Cái loginId và status sẽ phụ thuộc vào user khi đăng nhập, chẳng hạn như mình dùng user là abc có status là 1 thì url khi đó sẽ get được ở màn hình setting sẽ là:

example.com/u/mobile/menuloginId=abc&status=1

Vậy thì làm như nào mình thay đổi được cái url đó khi đăng nhập?
Và 1 cái nữa là mWebview.postUrl có phải là method để mình thay đổi được url đó không? Nếu không thì sửa nó ở đâu?

Mình cảm ơn mọi người rất nhiều!


(Hải Lương) #2

Không hiểu ý của bạn lắm, cái loginId và status đó là bạn đã có ở phía client đúng không? Vậy tại sao không ghép String lại cho link web rồi gọi webView.loadUrl(<url vừa ghép>) như bình thường?


(Nguyễn Huy) #3

Khổ nổi cái project này của ông anh ổng làm từ lâu rồi, trong đó không có dùng webview.loadUrl. Làm như vầy nè:

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()
                + "&amp;contractType=" + B2BLoginBis.getUserContractType() + "&amp;autoLoginKey="
                + B2BLoginBis.getUserAutoLoginKey() + "&amp;lang=" + B2BApplication.getLanguage()
                + "&amp;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 &amp;&amp; !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) {
                String url1 = view.getUrl();
                Log.d("zxc", "url: " + url1);
                return super.shouldOverrideUrlLoading(view, url);
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                mDataLoadingDialogView.close();
            }
        });
    }

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?