Рутированный Android: приостанавливать и предупреждать пользователя, когда какое-либо приложение получает доступ к списку контактов, микрофону или камере?

У меня есть пользователи с рутированными смартфонами Android 2.2+. Всякий раз, когда какое-либо приложение на устройстве получает доступ к списку контактов устройства, ресурсу микрофона или камеры, я хочу приостановить это приложение, вывести всплывающее предупреждающее сообщение для пользователя и позволить пользователю решить, следует ли прервать или продолжить.

Несмотря на то, что во время установки приложения Пользователь мог (вслепую) предоставить этим приложениям разрешение на доступ к этим ресурсам.

Итак, я хочу написать системную службу Android для непрерывного сканирования дескрипторов файлов (или чего-то еще), представляющих список контактов, микрофон и камеру. Если какое-либо другое приложение или служба/процесс/поток пытается открыть какой-либо из указанных выше файловых дескрипторов, я приостанавливаю его и вывожу всплывающее сообщение для пользователя, что-то вроде: «Приложение «ШАХМАТЫ» пытается для доступа к КАМЕРЕ!!! Закройте приложение или Продолжить?";

Я не смог найти абсолютно ничего в Android SDK или NDK, что помогло бы мне достичь моей цели.

Даже быстрый, грязный и опасный командный подход Linux, такой как «./data/lsof -w | grep audio», вставленный и запущенный на устройстве, никоим образом не помог — я не знаю, какой именно ресурс Android имена для grep, и, кроме того, файловые дескрипторы ресурсов кажутся открытыми все время, независимо от того, осуществляется ли к ним доступ или нет!

Спасибо, любой совет будет принят с благодарностью.


person user994718    schedule 14.10.2011    source источник
comment
Это звучит как отличная идея, но я собираюсь предположить, что это невозможно прямо сейчас. Если одно приложение может мешать работе других, оно само по себе будет представлять угрозу безопасности, возможно, вы захотите использовать его для предотвращения неправильных действий, но его можно использовать и для других целей. Я сомневаюсь, что команда Android оставила какой-то способ сделать это открытым. Еще раз, это всего лишь предположение.   -  person blindstuff    schedule 09.12.2011
comment
Я бы сказал, что это возможно, но это не самостоятельный проект, поскольку он потребует серьезных изменений в ядре и виртуальной машине Dalvik.   -  person antlersoft    schedule 16.12.2011


Ответы (1)


Соглашусь с предыдущими постами, говоря, что это невозможно. Но если вы развертывали собственное ядро, то здесь есть хорошая ветка предложений: модификация ядра Android

также эта ветка здесь находится вдоль аналогичного низкоуровневого подключения, которое вы хотите: http://groups.google.com/group/android-developers/browse_thread/thread/821e5a413f0014d9

Вот как написать драйвер для Android: http://www.kandroid.org/online-pdk/guide/display_drivers.html. Возможно, вам нужно написать драйвер, который является универсальным и просто заменяет существующие драйверы, которые вы хотите. этот драйвер затем указывал бы на резервную копию старых драйверов, эффективно обертывая старый драйвер. Таким образом, вы, надеюсь, должны сохранить общий драйвер, который вы пишете, и то же поведение и хорошую абстракцию, которые обеспечивают драйверы производителя.

person Dessus    schedule 14.12.2011