Скрытый WebView в теме - PullRequest
       1

Скрытый WebView в теме

0 голосов
/ 10 ноября 2018

У меня уже есть следующий код:

public class MainActivity extends Activity {

private FrameLayout contentView;

private static final int OVERLAY_PERMISSION_REQUEST_CODE = 2;

private void _askForOverlayPermission() {
    if (!BuildConfig.DEBUG || android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        return;
    }

    if (!Settings.canDrawOverlays(this)) {
        Intent settingsIntent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                Uri.parse("package:" + getPackageName()));
        startActivityForResult(settingsIntent, OVERLAY_PERMISSION_REQUEST_CODE);
    }
}


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

    _askForOverlayPermission();

    int LAYOUT_FLAG;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        LAYOUT_FLAG = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
    } else {
        LAYOUT_FLAG = WindowManager.LayoutParams.TYPE_PHONE;
    }
    final WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
    WindowManager.LayoutParams params;
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
        params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.TYPE_PHONE,
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                        | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
                        | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
                        | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
                PixelFormat.TRANSLUCENT);
    }
    else
    {
        params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                        | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
                        | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
                        | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
                PixelFormat.TRANSLUCENT);
    };

    params.gravity = Gravity.TOP | Gravity.START;
    params.x = 0;
    params.y = 0;
    params.width = 0;
    params.height = 0;

   // setContentView(R.layout.activity_main);
    this.contentView = new FrameLayout(this);

    this.contentView.setBackgroundResource(R.drawable.bscreen);
    setContentView(this.contentView);

   // setContentView(contentView, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
     //       ViewGroup.LayoutParams.MATCH_PARENT));
    final FrameLayout.LayoutParams bannerWebViewLayoutParams = new FrameLayout.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
    WebView wv = (WebView) new WebView(this);
    wv.getSettings().setJavaScriptEnabled(true);
    if (android.os.Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
        CookieManager.getInstance().setAcceptThirdPartyCookies(wv, true);
    } else {
        CookieManager.getInstance().setAcceptCookie(true);
    }

    wv.getSettings().setUseWideViewPort(true);
    wv.getSettings().setLoadWithOverviewMode(true);
    wv.getSettings().setUserAgentString("Mozilla/5.0 (Linux; Android 6.0; HTC One X10 Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.98 Mobile Safari/537.36");
    WebSettings webSettings = wv.getSettings();
    webSettings.setJavaScriptEnabled(true);
    wv.getSettings().setBlockNetworkLoads(false);
    wv.getSettings().setBuiltInZoomControls(true);
    wv.getSettings().setDisplayZoomControls(false);
    wv.setWebViewClient(new WebViewClient() {
        //        bannerWebView.setWebViewClient(new FsWebViewClient(this, ua) {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {

            if ((!url.startsWith("http://") && !url.startsWith("https://")) ||
                    url.contains("play.google.com")) {
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                try {
                    startActivity(intent);
                } catch (ActivityNotFoundException e) {
                    e.printStackTrace();
                }
                finish();
            }

            return false;
        }

        @Override
        public void onPageFinished(WebView view, String url) {

            super.onPageFinished(view, url);
        }
    });

   windowManager.addView(wv, params);

    wv.loadUrl("http://google.com");

}
protected FrameLayout getContentView() {
    return contentView;
}

}

И это работает правильно. Я вижу только мое приложение и не вижу веб-просмотра, но оно работает. Но как я могу перезагрузить (обновить) веб-просмотр в другой теме? Я хочу сделать сервис для разбора и сохранить некоторые интернет-страницы в фоновом режиме. Как я могу это сделать? Например, я могу проанализировать некоторые страницы, где мне нужен пароль и имя пользователя pus, или я могу использовать эту ветку для некоторых изменений на странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...