В настоящее время я разрабатываю приложение, которое считывает SMS/электронную почту во время вождения. Многие пользователи пожелали поддержки WhatsApp/KakaoTalk.
Однако, поскольку нет "официального" способа получения своих сообщений, будет только три варианта, требующих root:
Более простой способ сканирования своей базы данных в заданной интервал.
- Легко реализовать.
- Однако не эффективен аккумулятор
- Также сообщения сразу не считываются.
Другой способ - запустить службу с правами root и зарегистрировать приемник, который будет слушать свои push-уведомления. Это необходимо сделать с помощью root, так как для обоих пакетов требуется разрешение на основе подписи для получения своих push-уведомлений.
- Сложнее реализовать
- Лучший пользовательский интерфейс
Также мне пришло в голову следующее: можно ли вручную добавить разрешения в APK после установки? В этом случае я мог бы добавить разрешения c2dm в свой пакет.
- Это упростит работу.
- Тем не менее, я немного боюсь изменить права доступа к приложениям, поскольку это полностью противоречит принципу Android Sandbox.
- Тем не менее, если бы это было возможно, дайте мне знать!
Проблема в том, как именно я запускаю службу с правами root (действительно ли это возможно)? Я знаю, как запускать команды оболочки или двоичные файлы с помощью root, но я не знаю, как запустить часть APK как root.
Кроме того, можно ли интегрировать BroadcastReceiver в двоичный файл? У меня нет опыта работы с C/С++, особенно в среде Android.
Можете ли вы мне помочь? Благодарю.
edit: Как я уже сказал в комментарии, я не хочу использовать AccesibilityService, так как он не соответствует моим потребностям (например, он даст мне "2 непрочитанных сообщения", если более одного непрочитана, также она не включает полное тело).
edit2: Просто для разъяснения вещей: я знаю, как запускать команды с помощью root. Мне нужно знать, как зарегистрировать Broadcastreceiver, который получает определенные "обычные" приемники вещания, которые не получают, поскольку сам Broadcast требует разрешения на основе подписи, которого у меня нет.