在 webview 中添加广告拦截
Add adblock in webview
我正在尝试在我的片段中添加 adblock,当我尝试 inisialize webview 时,我在 new AdBlockerWebView.init(this).initializeWebView(webView);
行
上有下划线 this
package com.example.bottomnavigationview;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebResourceResponse;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.monstertechno.adblocker.AdBlockerWebView;
import com.monstertechno.adblocker.util.AdBlocker;
public class Fragment2 extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment2,container,false);
View v = inflater.inflate(R.layout.fragment2,container,false);
WebView webView = (WebView)v.findViewById(R.id.webView);
new AdBlockerWebView.init(this).initializeWebView(webView);
webView.setWebViewClient(new Browser_home());
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("https://cyber.sports.ru/dota2/match/");
webView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
if (keyEvent.getKeyCode() == KeyEvent.KEYCODE_BACK){
if(webView != null){
if (webView.canGoBack()){
webView.goBack();
} else {
getActivity().onBackPressed();
}
}
}
}
return true;
}
});
return v;
}
我需要把新行 AdBlockerWebView.init(this).initializeWebView(webView);
放在哪里来修复我的错误?
什么参数采用 init(...)
方法?我打赌它是 Context
,所以你可以在 Activity
、Service
和其他 类 扩展 Context
中使用 this
。但是 Fragment
没有扩展 Context
,没有自己的,正在使用父 Activity
的上下文,所以在那里你可以使用例如requireContext()
或 webView.getContext()
作为 init
方法的参数
new AdBlockerWebView.init(webView.getContext()).initializeWebView(webView);
假设您正在使用 THIS 库
我正在尝试在我的片段中添加 adblock,当我尝试 inisialize webview 时,我在 new AdBlockerWebView.init(this).initializeWebView(webView);
行
this
package com.example.bottomnavigationview;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebResourceResponse;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.monstertechno.adblocker.AdBlockerWebView;
import com.monstertechno.adblocker.util.AdBlocker;
public class Fragment2 extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment2,container,false);
View v = inflater.inflate(R.layout.fragment2,container,false);
WebView webView = (WebView)v.findViewById(R.id.webView);
new AdBlockerWebView.init(this).initializeWebView(webView);
webView.setWebViewClient(new Browser_home());
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("https://cyber.sports.ru/dota2/match/");
webView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
if (keyEvent.getKeyCode() == KeyEvent.KEYCODE_BACK){
if(webView != null){
if (webView.canGoBack()){
webView.goBack();
} else {
getActivity().onBackPressed();
}
}
}
}
return true;
}
});
return v;
}
我需要把新行 AdBlockerWebView.init(this).initializeWebView(webView);
放在哪里来修复我的错误?
什么参数采用 init(...)
方法?我打赌它是 Context
,所以你可以在 Activity
、Service
和其他 类 扩展 Context
中使用 this
。但是 Fragment
没有扩展 Context
,没有自己的,正在使用父 Activity
的上下文,所以在那里你可以使用例如requireContext()
或 webView.getContext()
作为 init
方法的参数
new AdBlockerWebView.init(webView.getContext()).initializeWebView(webView);
假设您正在使用 THIS 库