Autore Topic: Intercettare tutte le notifiche  (Letto 722 volte)

Offline skylong

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    S3
Intercettare tutte le notifiche
« il: 20 Luglio 2013, 01:12:44 CEST »
0
Ciao ragazzi,
vorrei creare un'app che intercetti tutte le notifiche....è possibile fare ciò??

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Intercettare tutte le notifiche
« Risposta #1 il: 20 Luglio 2013, 19:42:28 CEST »
0
Si lo puoi fare con un AccessibilityService.

Dai una occhiata qui:
Developing an Accessibility Service | Android Developers

Tieni conto che questo tipo di Servizio richiede una particolare abilitazione da parte degli utenti.
Inoltre le puoi intercettare, ma non puoi interagire.

Offline skylong

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    S3
Re:Intercettare tutte le notifiche
« Risposta #2 il: 28 Luglio 2013, 21:06:05 CEST »
0
Grazie per la risposta.
Ho provato a guardare delle guide su internet ma non riesco a capire come farlo funzionare...il codice che utilizzo è questo:

Codice (Java): [Seleziona]
import android.accessibilityservice.AccessibilityService;
import android.util.Log;
import android.view.accessibility.AccessibilityEvent;

public class NotifierService extends AccessibilityService {

        /*@Override
    protected void onServiceConnected() {
                super.onServiceConnected();
        Log.e("NOTIFICA", "onServiceConnected");
        AccessibilityServiceInfo info = new AccessibilityServiceInfo();
        info.flags = AccessibilityServiceInfo.DEFAULT;
        info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
        info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
        setServiceInfo(info);
    }*/

       
          @Override
          public void onAccessibilityEvent(AccessibilityEvent evt) {
                 
                  Log.e("","onAccessibilityEvent");
                if (evt.getEventType() == AccessibilityEvent.TYPE_ANNOUNCEMENT) {
                        Log.e("","notification: " + evt.getText());
                }
               
         
                 
          }

          @Override
          public void onInterrupt() { }
        }

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Intercettare tutte le notifiche
« Risposta #3 il: 29 Luglio 2013, 09:01:46 CEST »
0
Non è banalissimo attivarlo.
A grandi linee innanzitutto lo devi dichiarare nel Manifest:

Codice (XML): [Seleziona]
<service android:name=".MyService" android:enabled="true"
      android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
      <intent-filter>
          <action android:name="android.accessibilityservice.AccessibilityService" ></action>
       </intent-filter>
        <meta-data android:name="android.accessibilityservice"
                            android:resource="@xml/accessibilityservice" />
 </service>

Quel @xml/accessibilityservice è un file accessibilityservice.xml (che puoi chiamare come vuoi) che devi mettere nella cartella xml.
Li dentro devi indicare cosa vai ad intercettare:

Codice (XML): [Seleziona]
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
   android:accessibilityEventTypes="typeNotificationStateChanged"
   android:accessibilityFeedbackType="feedbackVisual"
   android:notificationTimeout="100"
   android:packageNames="com.xxxxx"
   android:description="@string/accessibility_service_description"></accessibility>

E' fondamentale     android:packageNames="com.xxxxx" dove com.xxxx è il package della notifica che vuoi intercettare.

A questo punto, dopo l'installazione devi andare su Impostazioni, Accessibilità, e li troverai il tuo service da attivare.

Offline skylong

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    S3
Re:Intercettare tutte le notifiche
« Risposta #4 il: 29 Luglio 2013, 21:28:32 CEST »
0
mmmh più o meno ho capito come farlo funzionare...se volessi creare un elenco delle possibili notifiche da intercettare?oppure come intercettarle tutte...