我想阅读/访问/记录其他应用程序在通知栏上触发的通知。
我经常搜索Intents
和PendingIntents
,但无法获得解决方案。
在发出任何通知时,是否需要通知我的申请?
或者android系统是否提供用户级应用程序读取通知的内容?
答案 0 :(得分:7)
从api 18(android 4.3)开始,它是可能的: http://developer.android.com/reference/android/service/notification/NotificationListenerService.html
非常易于使用,但用户必须手动授予应用程序权限。
答案 1 :(得分:5)
终于得到了答案。!!!使用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);
}
}
我的清单是:
<?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>
享受编码。!!! :)
答案 2 :(得分:0)
没有任何API可以访问任何通知。至少它会是安全漏洞。你唯一能做的就是捕捉一些导致通知的事件(如短信)。
答案 3 :(得分:0)
通过发送Notification
引发Intent
。
Intent intent = new Intent(this, NotificationReceiver.class);
NotificationReceiver
抓住Intent
并弹出Notification
。
完全有可能使用BroadCastReceiver在您的某个应用程序中捕获相同的Intent
并过滤您想要的Intent
。