通知被通知时如何得到通知

我想读取/访问/logging其他应用程序在通知栏上触发的通知。

我search了IntentsPendingIntents很多,但无法得到解决scheme。

当任何通知被触发时,我的应用程序是否需要通知?

还是android系统提供的东西来读取用户级应用程序的通知?

从api 18(android 4.3)开始是可能的: http : //developer.android.com/reference/android/service/notification/NotificationListenerService.html

非常容易使用,但用户必须手动授予应用程序的权限。

终于得到了答案。 使用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); } } 

我的Manifest是:

 <?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> 

享受编码。 🙂

没有任何API可以访问任何通知。 至less这将是安全漏洞。 只有你可以捕捉一些事件,导致通知(如短信)。

Notification是通过发送Intent提出的。

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

NotificationReceiver捕获Intent并popup一个Notification

在您的应用程序中使用BroadCastReceiver和筛选器,可以在您想要的Intent中捕获相同的Intent