Cara menghapus konten Webview untuk mengubah video di Android Oreo

Dalam aktivitas Saya, saya memiliki tampilan Web di bagian atas yang memutar video di dalamnya. di bawah Tampilan Web saya memiliki daftar video untuk dipilih. Untuk versi Android sebelum Oreo ketika saya memilih video baru selalu diputar di Webview. Namun di Oreo tidak berfungsi, Video pertama yang saya Pilih selalu diputar. Saya telah membaca dokumen Oreo yang mengatakan demikian

Memanggil clearFormData() tidak lagi berpengaruh.

Saya mencari beberapa alternatif tetapi tidak dapat menemukan solusi apa pun. Di bawah ini adalah pekerjaan saya yang telah saya lakukan

    private void initViews() {
      toolbar = findViewById(R.id.toolbar);
      if (toolbar != null) {
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setTitle(getString(R.string.app_name));
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
        });
       }
    recyclerView = findViewById(R.id.recycler_view);
    progressBar = findViewById(R.id.progressBar3);
    initWebView();
    if (recyclerView != null) {
        initRecyclerView(model);
    }
    AdView adView= findViewById(R.id.ad_view);
    admobUtils.loadBannerAd(adView);

    }

   public void initWebView() {
    webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
    webView.getSettings().setSaveFormData(false);
    webView.clearFormData();
    webView.clearCache(true);
    webView.clearHistory();
    webView.setWebViewClient(new WebViewClient() {

        @Override
        public void onLoadResource(WebView view, String url) {
            super.onLoadResource(view, url);
            view.clearHistory();


        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            webView.setVisibility(View.VISIBLE);
            progressBar.setVisibility(View.GONE);
            RXEventBusUtils.getInstance().postEvent(new MediaPlayerEvent());
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            webView.setVisibility(View.VISIBLE);
            progressBar.setVisibility(View.VISIBLE);
        }
    });
    webView.getSettings().setBuiltInZoomControls(false);
    webView.getSettings().setDisplayZoomControls(false);


    String htmlData;

    if (Constants.isFullScreen) {
        htmlData = getHtmlDataLanscape(model.getVideo_url());
    } else {
        htmlData = getHtmlData(model.getVideo_url());
    }
    webView.loadData(htmlData, "text/html", null);

  }

Di sinilah saya memilih video dari daftar.

  public void selectVideo(){
            progressBar.setVisibility(View.VISIBLE);
            model = new MyModel();
            model = ((SelectVideoEvent) event).getModel();
            if (model.getVideo_url() != null && !model.getVideo_url().isEmpty()) {
                initRecyclerView(model);
                initWebView();
                Bundle bundleFire = new Bundle();
                Application.getFireBaseInstance().logEvent("video_from_list",bundleFire);
            }
    }

Tolong adakah yang bisa memberi tahu saya cara mengubah konten tampilan web di Android Oreo


person Community    schedule 04.03.2019    source sumber


Jawaban (1)


Seperti clearFormData() no longer has any effect di versi Android Oreo. Cara terbaik adalah dengan membuat Webview sebagai tampilan baru. Untuk tujuan itu Anda harus menggunakan frameLayout di dalam file xml, dan di dalam file Java, buat tampilan web secara dinamis dan tambahkan tampilan web tersebut di framelayout sebagai tampilan.

 <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="200dp">

    <FrameLayout
        android:id="@+id/myWeb"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:alwaysDrawnWithCache="true" />
</RelativeLayout>

public class TestActivity extends AppCompatActivity {
FrameLayout frameLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);
    frameLayout = findViewById(R.id.myWeb);
    setWebView();

    /*setWebViewToLoadData*/

}

public void setWebView(){
    frameLayout.removeAllViews();

    WebView webView = new WebView(this);
    webView.setLayoutParams(new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.MATCH_PARENT,
            LinearLayout.LayoutParams.MATCH_PARENT));
    frameLayout.addView(webView);
}
}

And indside your selectVideo method call again setWebView

person Raza    schedule 27.03.2019