8

Chcę odczytywać/uzyskiwać dostęp/rejestrować powiadomienia wysyłane na pasku powiadomień przez inne aplikacje.Jak otrzymać powiadomienie, gdy powiadomienie zostanie zgłoszone?

Bardzo często szukałem Intents i PendingIntents, ale nie mogłem znaleźć rozwiązania.

Czy moja aplikacja musi zostać powiadomiona o uruchomieniu powiadomienia?

Czy system Android oferuje coś do czytania powiadomień przez aplikacje na poziomie użytkownika?

Odpowiedz

5

Nareszcie odpowiedź. !!! Korzystanie AccessibilityService

public class NotificationService extends AccessibilityService { 

@Override 
public void onAccessibilityEvent(AccessibilityEvent event) { 
    // TODO Auto-generated method stub. 
//Code when the event is caught 
    } 
@Override 
public void onInterrupt() { 
    // TODO Auto-generated method stub. 

} 

@Override 
protected void onServiceConnected() { 
    AccessibilityServiceInfo info = new AccessibilityServiceInfo(); 
     info.feedbackType = 1; 
      info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED; 
     info.notificationTimeout = 100; 
     setServiceInfo(info); 
    } 
} 

I moim manifestem jest:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="org.test.notify" 
android:versionCode="1" 
android:versionName="1.0" > 
<uses-sdk android:minSdkVersion="8" /> 
<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <service android:name=".NotificationService" android:enabled="true"> 
      <intent-filter > 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
      <action android:name="android.accessibilityservice.AccessibilityService"/> 
     </intent-filter> 
    </service> 
    </application> 
</manifest> 

Ciesz Coding !!!. :)

+1

Kod służy wyłącznie do przechwytywania zdarzeń związanych z powiadomieniami. Zmieniając 'info.eventTypes =' możemy przechwytywać różne typy zdarzeń. – Kishore

+0

Próbuję zalogować się do usługi połączonej z usługą, ale nie działa, czy wymaga żadnych uprawnień – Calvin

+0

@ Calvin: Musisz ręcznie włączyć usługę dostępności z Ustawienia (Ustawienia -> Dostępność) – Kushal

0

Nie ma żadnego interfejsu API do uzyskiwania dostępu do żadnego powiadomienia. Przynajmniej byłaby to dziura w bezpieczeństwie. Jedyne, co możesz złapać niektóre zdarzenia, które powodują powiadomienia (jak sms).

0

A Notification jest wywoływana przez wysłanie Intent.

Intent intent = new Intent(this, NotificationReceiver.class); 

W NotificationReceiver chwyta Intent i wyskakuje Notification.

Jest całkiem możliwe, aby złapać ten sam Intent w jednej z aplikacji przy użyciu BroadCastReceiver i filtrować na Intent chcesz.

+0

Nie ma zamiaru "zmiany stanu paska powiadomień" lub "powiadomienia zwolnionego". – Kishore

+0

To prawda, ale powiadomienia są wysyłane za pomocą intencji. A Intencje można złapać za pomocą BroadCastReceiver. Oczywiście, wszystko zależy od rodzaju Nofication, do której chcesz mieć dostęp. – DroidBender

+0

Właściwie chcę zalogować wszystkie powiadomienia. Dlatego szukam ogólnej metody przechwytywania wszystkich powiadomień. – Kishore

Powiązane problemy