Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
justjew
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 45
#1

Приложение, которое будет на ПК уведомлять об уведомлениях на телефоне - Android

07.01.2016, 13:56. Просмотров 298. Ответов 10
Метки нет (Все метки)

Как "отлавливать" уведомления всех приложений?
Хочу сделать приложение, которое будет на ПК уведомлять об уведомлениях на андройде
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2016, 13:56     Приложение, которое будет на ПК уведомлять об уведомлениях на телефоне
Посмотрите здесь:

Создание приложения которое будет выгружать базу звонков и ставить комментарии к ним Android
Android Сколько будет стоить приложение написанное для андроида?
Не показывает курсив на телефоне Android
Android Запуск приложения на телефоне
Приложение в телефоне работает корректно только в эмуляторе Android
Android Отладка на телефоне
Android Можно ли сделать приложение, которое будет брать RSS-ленту с моего сайта?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
резкий
1960 / 1695 / 525
Регистрация: 12.05.2014
Сообщений: 6,046
Завершенные тесты: 1
07.01.2016, 15:23     Приложение, которое будет на ПК уведомлять об уведомлениях на телефоне #2
А ты уверен что сможешь его написать?
Отлавливать оповещения на телефоне - это одно. Их потом как-то надо на ПК передавать.
На ПК что-то должно принимать это все, то есть надо будет писать свой сервис и на компе.
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,502
07.01.2016, 18:47     Приложение, которое будет на ПК уведомлять об уведомлениях на телефоне #3
Цитата Сообщение от Паблито Посмотреть сообщение
надо будет писать свой сервис и на компе
Не просто сервис, а клиент-серверную систему! Некие PUSH уведомления...

...но если серьезно... это было первое что я написал в первые месяцы изучения андроида!
1) написать сервер на языке под Win. Я избрал Делфи. Работало криво, но работало...
2) найти исходники простого клиента на яве-андроиде, способном отправлять строки.
Проблема была в том что не знал как удерживать сокет и приходилось после каждого сообщения переконективаться, но система РАБОТАЛА! Это было до того как я узнал о ЛогКэт-е...
justjew
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 45
08.01.2016, 12:54  [ТС]     Приложение, которое будет на ПК уведомлять об уведомлениях на телефоне #4
Я решил взять c#. Как отправлять разберусь.
Нужно пока что просто отловить уведомления на андройде и где-нибудь сохранить их содержимое.
Паблито
резкий
1960 / 1695 / 525
Регистрация: 12.05.2014
Сообщений: 6,046
Завершенные тесты: 1
08.01.2016, 16:10     Приложение, которое будет на ПК уведомлять об уведомлениях на телефоне #5
Я оставлю тут куски кода, вдруг кому-то пригодится.
1. заводим accessibility service, назовем его для примера NotificationCatcher
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import android.accessibilityservice.AccessibilityService;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.util.Log;
import android.view.accessibility.AccessibilityEvent;
 
public class NotificationCatcher extends AccessibilityService {
 
    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        if (event.getEventType() == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) {
            final String packagename = String.valueOf(event.getPackageName());
            Log.i("***", "onAccessibilityEvent " + packagename);
        }
    }
 
    @Override
    public void onInterrupt() {
    }
 
    @Override
    protected void onServiceConnected() {
        Log.i("***", "onServiceConnected ");
        AccessibilityServiceInfo info = new AccessibilityServiceInfo();
        info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED;
        info.notificationTimeout = 100;
        info.feedbackType = AccessibilityEvent.TYPES_ALL_MASK;
        setServiceInfo(info);
    }
}


2. Прописываем его в манифест
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
        <service
            android:name=".NotificationCatcher"
            android:label="Notification catch service"
            android:enabled="true"
            android:exported="false"
            android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService" />
            </intent-filter>
            <meta-data
                android:name="Any.Unique.Name"
                android:resource="@xml/notif_catcher" />
        </service>


3. в папке res/xml создаем файл notif_catcher.xml
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityEventTypes="typeNotificationStateChanged"
    android:accessibilityFeedbackType="feedbackAllMask"
    android:notificationTimeout="100" />


4. в onCreate() главной активити запускаем сервис
Кликните здесь для просмотра всего текста
Java
1
2
        Intent intent = new Intent(MainActivity.this, NotificationCatcher.class);
        startService(intent);


После запуска приложения на телефоне в Setting - Accessibility появится новая служба с названием "Notification catch service" (которое мы прописали в манифесте).
Эту службу надо ручками запустить. Наверняка есть способ стартовать ее из проложения, но мне было лень копать дальше. Я удовлетворился вариантом с ручным стартом.

Все. Теперь после старта приложения оно будет следить за нотификациями.
По прибытии уведомления в сервисе будет срабатывать метод onAccessibilityEvent()

PROFIT
Дальше самостоятельно )
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,502
08.01.2016, 17:30     Приложение, которое будет на ПК уведомлять об уведомлениях на телефоне #6
Цитата Сообщение от Паблито Посмотреть сообщение
оставлю тут куски кода, вдруг кому-то пригодится.
У меня чой-то не сработало!
Или руки кривые... или не полный код...
Не особо представляю себе зачем подобное нужно, но хотел "поймать"!
может доступ дополнительный нужен?
И можете подробнее что КОНКРЕТНО сервис должен ловить?
Паблито
резкий
1960 / 1695 / 525
Регистрация: 12.05.2014
Сообщений: 6,046
Завершенные тесты: 1
08.01.2016, 17:42     Приложение, которое будет на ПК уведомлять об уведомлениях на телефоне #7
Надо перезапустить сервис в настройках телефона. И что бы он был после этого ON.
После этого можно еще раз запустить программу.

Он ловит событие когда приходит новое оповещение.

Добавлено через 9 минут
Я ж говорю - сделал чисто принципиально, что бы знать на будущее что такое существует.
Метод очень сырой, надо дотачивать. Делал по ресурсам:
http://developer.android.com/intl/ru...y/service.html
http://developer.android.com/intl/ru...tyService.html
Важно! Настройки сервиса прописываются дважды - в методе onServiceConnected() и в манифесте строкой android:resource="@xml/notif_catcher"
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,502
08.01.2016, 17:45     Приложение, которое будет на ПК уведомлять об уведомлениях на телефоне #8
Цитата Сообщение от Паблито Посмотреть сообщение
Надо перезапустить сервис в настройках телефона. И что бы он был после этого ON.
У меня 4.03... Не нашел кнопку "перезапустить". Могу убить... Могу перезапустить программу (после кила в хоуме). Сервис востанавливается...

Открываю чужую прогу - заставляю ее добавить и убрать нотиф - сообщение в логкэт не доходит!

я так понимаю - по этому принципу PushBullet сообщения в хром отсылает...
Паблито
резкий
1960 / 1695 / 525
Регистрация: 12.05.2014
Сообщений: 6,046
Завершенные тесты: 1
08.01.2016, 18:00     Приложение, которое будет на ПК уведомлять об уведомлениях на телефоне #9
Я тестировал на эмуляторе с версией 4.1.1 (API 16) и на самсунге с 5-й версией.
Перезапустить, имелось ввиду нажать в настройках этого сервиса кнопку ON/OFF

У меня после запуска приложения с этим сервисом, сам сервис приходится запускать из настроек. Я прочитал что надо именно ручками, ибо это "Специальные возможности".
Вот после запуска сервиса из настроек я стартую другую программу, которая по клику генерирует уведомление и сервис срабатывает нормально. В моем примере он в лог пишет название пакета, который создал уведомление. Тег в Log.i свой надо поставить.
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,502
08.01.2016, 18:16     Приложение, которое будет на ПК уведомлять об уведомлениях на телефоне #10
Цитата Сообщение от Паблито Посмотреть сообщение
нажать в настройках этого сервиса кнопку ON/OFF
Похоже в настройках 4.03 просто нет кнопки ON/OFF...
может позже попробую на эмуляторах... Спасибо за код!
(про тег в Log я догадался! )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2016, 18:26     Приложение, которое будет на ПК уведомлять об уведомлениях на телефоне
Еще ссылки по теме:

Тестирование на телефоне (планшете) Android
Android Сложно ли будет добавить в данное приложение чат?
Android Просмотреть БД в телефоне
Создание радио приложения которое будет продолжать играть в фоне Android
Приложение для Android, которое отправляет USSD запросы Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Паблито
08.01.2016, 18:26     Приложение, которое будет на ПК уведомлять об уведомлениях на телефоне
  #11

Не по теме:

у меня это выглядит так
Приложение, которое будет на ПК уведомлять об уведомлениях на телефоне
И еще раз
- запускаю программу
- стартую сервис ручками в настройках
- снова запускаю программу, смотрю запущен ли сервис (у меня он оказывается отключенным) и включаю ео снова
- переключаюсь или стартую другую прогу с уведомлениями и тыкаю там кнопку "отправить уведомление"
- оно приходит и тут же в логе я вижу как сработал метод onAccessibilityEvent() в сервисе

Yandex
Объявления
08.01.2016, 18:26     Приложение, которое будет на ПК уведомлять об уведомлениях на телефоне
Ответ Создать тему
Опции темы

Текущее время: 02:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru