gpt4 book ai didi

android - 如何清除 Webview 内容以更改 Android Oreo 中的视频

转载 作者:行者123 更新时间:2023-11-29 02:21:58 28 4
gpt4 key购买 nike

在我的 Activity 中,我在顶部有一个 Webview,可以播放其中的视频。在 WebView 下方,我有一个可供选择的视频列表。对于 Oreo 之前的 Android 版本,当我选择新视频时,它总是在 Webview 中播放。但在 Oreo 中它不起作用,它总是播放我选择的第一个视频。我已经阅读了奥利奥的文档,它说

Calling clearFormData() no longer has any effect.

我正在寻找一些替代方案,但找不到任何解决方案。以下是我为此所做的工作

    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);

}

这是我从列表中选择视频的地方。

  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);
}
}

谁能告诉我如何更改 Android Oreo 中的 webview 内容

最佳答案

因为 clearFormData() 在 android 版 Oreo 中不再有任何效果。最好的方法是创建一个 Webview 作为新 View 。为此,您应该在 xml 文件和 java 文件中使用 frameLayout,动态创建 webview 并将该 webview 作为 View 添加到 framelayout 中。

 <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);
}
}

然后在你的 selectVideo 方法中再次调用 setWebView

关于android - 如何清除 Webview 内容以更改 Android Oreo 中的视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54984973/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com