Je connais une façon dont le blocage des publicités fonctionne (sur n'importe quel ordinateur en fait), ils modifient le fichier hosts pour pointer vers localhost pour tous les serveurs publicitaires connus. Pour Android, ce fichier est situé dans le fichier "etc/hosts".
Par exemple, j'utilise des publicités admob et un fichier d'hôte que j'ai pris à partir de rom personnalisé liste les entrées admob suivantes :
127.0.0.1 analytics.admob.com
127.0.0.1 mmv.admob.com
127.0.0.1 mm.admob.com
127.0.0.1 admob.com
127.0.0.1 a.admob.com
127.0.0.1 jp.admob.com
127.0.0.1 c.admob.com
127.0.0.1 p.admob.com
127.0.0.1 mm1.vip.sc1.admob.com
127.0.0.1 media.admob.com
127.0.0.1 e.admob.com
Maintenant, chaque fois qu'un processus tente de résoudre les adresses ci-dessus, il est acheminé vers l'adresse indiquée à gauche de celles-ci (localhost) dans ce cas.
Ce que je fais dans mes applications, c'est de vérifier ce fichier hôte et de rechercher toute entrée admob, si j'en trouve, j'informe l'utilisateur que j'ai détecté un blocage publicitaire et je lui demande de supprimer les entrées admob de ce fichier et de ne pas l'autoriser à utiliser l'application.
Après tout, à quoi cela me sert-il s'ils ne voient pas les publicités ? Il n'y a aucun intérêt à les laisser utiliser l'application gratuitement.
Voici un extrait de code qui montre comment j'y parviens :
BufferedReader in = null;
try
{
in = new BufferedReader(new InputStreamReader(
new FileInputStream("/etc/hosts")));
String line;
while ((line = in.readLine()) != null)
{
if (line.contains("admob"))
{
result = false;
break;
}
}
}
Je souhaite que toutes les applications supportant la publicité vérifient ce fichier. Vous n'avez pas besoin d'être Root pour y accéder, mais y écrire peut être une autre histoire.
De plus, je ne suis pas sûr qu'il y ait d'autres fichiers qui agissent de la même manière sur un système d'exploitation basé sur Linux, mais en tout cas nous pouvons toujours vérifier tous ces fichiers.
Toute suggestion d'amélioration est la bienvenue.
De plus, l'application appelée "Ad Free Android" a besoin d'un accès Root, ce qui signifie qu'elle modifie très probablement le fichier hosts afin d'atteindre son objectif.