Мне известно об одном способе блокировки рекламы (на любом компьютере): они изменяют файл hosts так, чтобы он указывал на localhost для всех известных рекламных серверов. Для Android это находится в файле "etc / hosts".
Например, я использую рекламные объявления admob, а в файле хоста, взятом из пользовательского раздела, перечислены следующие записи admob:
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
Теперь каждый раз, когда процесс пытается разрешить вышеуказанные адреса, они направляются по адресу, указанному слева от них (localhost) в этом случае.
Что я делаю в своих приложениях, так это проверяю этот хост-файл и проверяю наличие записей admob. Если я нахожу их, я уведомляю пользователя, что обнаружил блокировку рекламы, и говорю им об удалении записей admob оттуда и не разрешаю им использовать приложение.
В конце концов, что хорошего мне, если они не видят рекламу? Нет смысла позволять им использовать приложение бесплатно.
Вот фрагмент кода того, как я этого добиваюсь:
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;
}
}
}
Я клянусь, что все поддерживаемые рекламой приложения должны проверять этот файл. Вам не нужно быть пользователем root для доступа к нему, но запись в него может быть другой историей.
Кроме того, не уверен, есть ли какие-либо другие файлы, которые действуют так же в ОС на основе Linux, но в любом случае мы всегда можем проверить все эти файлы.
Любые предложения по улучшению этого приветствуются.
Кроме того, приложению «Ad Free android» необходим root-доступ, а это означает, что оно, скорее всего, изменяет файл hosts для достижения своей цели.