Wenn Sie Javascript deaktivieren, verschwinden die meisten Anzeigen. Wenn Sie jedoch kein Javascript verwenden können, ist dies unpraktisch. Dies ist also ein Memo bei der Implementierung von Adblock. Auf Englisch waren die Materialien geeignet, aber ich konnte die japanische Seite nicht finden.
Sie können es implementieren, indem Sie dieser Seite folgen https://www.hidroh.com/2016/05/19/hacking-up-ad-blocker-android/
Liste der Werbehost https://sites.google.com/site/hosts2ch/
Überschreiben Sie WebViewClient.shouldInterceptRequest (), um festzustellen, ob die Anforderungs-URL auf der Seite der Adserving-Host ist. Wenn es sich um eine Werbung handelt, wird eine leere Antwort zurückgegeben. das ist alles.
Sie können eine Liste der Hosts, die Anzeigen schalten, unter https://sites.google.com/site/hosts2ch/ herunterladen. (Sehr angenehm .. !!) Ich denke, es wird beim Herunterladen so aussehen, also werde ich es so formen, dass es einfach zu handhaben ist.
ja.txt
# hosts2ch - Japanese mobile ad servers hosts file.
# This file is public domain, of course.
#
# file size: 34 kB
# entries: 1279
#
# ---------- last updated: 2019-01-16 ----------
127.0.0.1 100234.advision-adnw.jp
127.0.0.1 100291.adnico.jp
127.0.0.1 100602.advision-adnw.jp
127.0.0.1 100651.advision-adnw.jp
127.0.0.1 100800.advision-adnw.jp
127.0.0.1 101623.sprout-ad.com
127.0.0.1 107008.speead.jp
127.0.0.1 150601.fc2rs.com
127.0.0.1 1tmg.info
127.0.0.1 2.chmato.me
・
・
・
Entfernen Sie die Kommentarzeile und die IP-Adressspalte, um sie nur als Host zu verwenden, und benennen Sie die Datei hosts.txt. So ↓
hosts.txt
100234.advision-adnw.jp
100291.adnico.jp
100602.advision-adnw.jp
100651.advision-adnw.jp
100800.advision-adnw.jp
101623.sprout-ad.com
107008.speead.jp
150601.fc2rs.com
1tmg.info
2.chmato.me
・
・
・
Fügen Sie es dem Assets-Ordner hinzu. Wenn der Assets-Ordner nicht vorhanden ist, erstellen Sie ihn.
AdBlocker.java
public class AdBlocker {
private static final String AD_HOSTS_FILE = "hosts.txt";
private static final Set<String> AD_HOSTS = new HashSet<>();
public static void init(final Context context) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
loadFromAssets(context);
} catch (IOException e) {
// noop
}
return null;
}
}.execute();
}
@WorkerThread
private static void loadFromAssets(Context context) throws IOException {
InputStream stream = context.getAssets().open(AD_HOSTS_FILE);
BufferedSource buffer = Okio.buffer(Okio.source(stream));
String line;
while ((line = buffer.readUtf8Line()) != null) {
AD_HOSTS.add(line);
}
buffer.close();
stream.close();
}
public static boolean isAd(String url) {
HttpUrl httpUrl = HttpUrl.parse(url);
return isAdHost(httpUrl != null ? httpUrl.host() : "");
}
private static boolean isAdHost(String host) {
if (TextUtils.isEmpty(host)) {
return false;
}
int index = host.indexOf(".");
return index >= 0 && (AD_HOSTS.contains(host) ||
index + 1 < host.length() && isAdHost(host.substring(index + 1)));
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static WebResourceResponse createEmptyResource() {
return new WebResourceResponse("text/plain", "utf-8", new ByteArrayInputStream("".getBytes()));
}
}
Überschreiben und implementieren Sie die shouldInterceptRequest () -Methode des WebViewClient. Alle von Webview gelesenen Anfragen aus der Quelle werden einmal durch shouldInterceptRequest () geleitet (ich verstehe, dass dies korrekt ist).
MyWebViewClient.java
private Map<String, Boolean> loadedUrls = new HashMap<>();
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@override99
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
boolean ad;
if (!loadedUrls.containsKey(url)) {
ad = AdBlocker.isAd(url);
loadedUrls.put(url, ad);
} else {
ad = mLoadedUrls.get(url);
}
return ad ? AdBlocker.createEmptyResource() :
super.shouldInterceptRequest(view, url);
}
Initialisieren Sie AdBlocker in MyApplication, das die Anwendung erbt.
MyApplication.java
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
AdBlocker.init(this);
}
}
Vergessen Sie nicht, es zu Android Manifest hinzuzufügen.
AndroidManifest.xml
<application
android:name="MyApplication"
....
....
/>
https://www.hidroh.com/2016/05/19/hacking-up-ad-blocker-android/ Fast wie auf dieser Seite gezeigt. Weitere Informationen finden Sie hier.
Recommended Posts