package com.knight.arch.ui.fragment;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.knight.arch.R;
import com.knight.arch.events.LoginUriMsg;
import com.knight.arch.utils.L;
import de.greenrobot.event.EventBus;
/**
* @author andyiac
* @date 15/10/22
* @web http://blog.andyiac.com
* @github https://github.com/andyiac
*/
@SuppressLint("ValidFragment")
public class LoginDialogFragment extends DialogFragment {
private String url = "";
public LoginDialogFragment(String url) {
this.url = url;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final WebView webView = new WebView(this.getActivity()) {
boolean layoutChangedOnce = false;
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
if (!layoutChangedOnce) {
super.onLayout(changed, l, t, r, b);
layoutChangedOnce = true;
}
}
@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
super.onFocusChanged(true, direction, previouslyFocusedRect);
}
@Override
public boolean onCheckIsTextEditor() {
return true;
}
};
webView.loadUrl(url);
webView.setFocusable(true);
webView.setFocusableInTouchMode(true);
webView.requestFocus(View.FOCUS_DOWN);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Uri uri = Uri.parse(url);
if (uri.getScheme().equals("http")) {
LoginUriMsg msg = new LoginUriMsg();
msg.setUrl(uri);
EventBus.getDefault().post(msg);
LoginDialogFragment.this.dismiss();
return true;
}
return super.shouldOverrideUrlLoading(view, url);
}
});
webView.requestFocus(View.FOCUS_DOWN);
builder.setView(webView);
return builder.create();
}
}