Укоренившийся Android: приостановить и предупредить пользователя, когда какое-либо приложение получает доступ к списку контактов, микрофону или камере? - PullRequest
3 голосов
/ 14 октября 2011

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

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

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 15 декабря 2011

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

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

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

0 голосов
/ 09 декабря 2011

Не ответ, но комментарии к этому вопросу отключены, так как я начал вознаграждение за него. Проверьте эту статью , это может быть полезно, особенно этот параграф:

С точки зрения разработчика разрешения - это просто строки, связанные с программой и ее UID.Вы можете использовать метод контекста класса checkPermission (разрешение String, int pid, int uid), чтобы программно проверить, есть ли у процесса (и соответствующего UID) определенное разрешение, такое как READ_CONTACTS.Это всего лишь один из многих способов предоставления разрешений разработчикам во время выполнения.Пользовательский вид разрешений прост и непротиворечив;идиома правоприменения со стороны разработчиков также непротиворечива, но немного подстраивается под каждый механизм IPC.

Существует еще не выпущенное приложение, исследованное и разработанное людьми из NCSU.Посмотрите "TISSA NCSU" в Google.

...