instagram sign in webview

爱⌒轻易说出口 提交于 2019-12-24 08:55:56

问题


I am trying to integrate Instagram auth in my app. But i don`t know how to make my webview full screen ?

Instagram dialog

This is my InstagramDialog.java

 public class InstagramDialog extends Dialog {
        static final float[] DIMENSIONS_LANDSCAPE = { 460, 260 };
        static final float[] DIMENSIONS_PORTRAIT = { 420, 420 };
        static final FrameLayout.LayoutParams FILL = new FrameLayout.LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);
        static final int MARGIN = 0;
        static final int PADDING = 0;
        private static final String TAG = "InstagramApp-WebView";

        public InstagramDialog(Context context, String url,
                               OAuthDialogListener listener) {
            super(context);
            mUrl = url;
            mListener = listener;
        }

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            mSpinner = new ProgressDialog(getContext());
            mSpinner.requestWindowFeature(Window.FEATURE_NO_TITLE);
            mSpinner.setMessage("Loading...");
            mContent = new LinearLayout(getContext());
            mContent.setOrientation(LinearLayout.VERTICAL);
            setUpTitle();
            setUpWebView();

            Display display = getWindow().getWindowManager().getDefaultDisplay();
            final float scale = getContext().getResources().getDisplayMetrics().density;
            float[] dimensions = (display.getWidth() < display.getHeight()) ? DIMENSIONS_PORTRAIT
                    : DIMENSIONS_LANDSCAPE;

            addContentView(mContent, new FrameLayout.LayoutParams(
                    (int) (dimensions[0] * scale + 0.5f), (int) (dimensions[1]
                    * scale + 0.5f)));
            CookieSyncManager.createInstance(getContext());
            CookieManager cookieManager = CookieManager.getInstance();
            cookieManager.removeAllCookie();
        }

        private void setUpTitle() {
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            mTitle = new TextView(getContext());
            mTitle.setText("InstagramApp");
            mTitle.setTextColor(Color.WHITE);
            mTitle.setTypeface(Typeface.DEFAULT_BOLD);
            mTitle.setBackgroundColor(Color.BLACK);
            mTitle.setPadding(MARGIN + PADDING, MARGIN, MARGIN, MARGIN);
            mContent.addView(mTitle);
        }

        private void setUpWebView() {
            mWebView = new WebView(getContext());
            mWebView.setVerticalScrollBarEnabled(false);
            mWebView.setHorizontalScrollBarEnabled(false);
            mWebView.setWebViewClient(new OAuthWebViewClient());
            mWebView.getSettings().setJavaScriptEnabled(true);
            mWebView.loadUrl(mUrl);
            mWebView.setLayoutParams(FILL);
            mContent.addView(mWebView);
        }

        private class OAuthWebViewClient extends WebViewClient {

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                Log.d(TAG, "Redirecting URL " + url);
                if (url.startsWith(InstagramApp.mCallbackUrl)) {
                    String urls[] = url.split("=");
                    mListener.onComplete(urls[1]);
                    InstagramDialog.this.dismiss();
                    return true;
                }
                return false;
            }
        }

Link to my full class https://github.com/mykolamatsiakh/felix_for_max/blob/master/app/src/main/java/com/flag/app/instagramSignIn/InstagramDialog.java


回答1:


It's because you are loading the whole login page inside a dialog. If you are looking for a fullscreen login page, you should load it on a new view

Good luck



来源:https://stackoverflow.com/questions/50162428/instagram-sign-in-webview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!