在我正在開發的Android應用程序中,我希望能夠檢測何時出現新的狀態欄通知,而不管它是否是由我的應用程序引起的。具體來說,我想計算給定時間範圍內的通知數量。檢測新的Android通知
這甚至是可能的,如果是這樣,怎麼樣?
在我正在開發的Android應用程序中,我希望能夠檢測何時出現新的狀態欄通知,而不管它是否是由我的應用程序引起的。具體來說,我想計算給定時間範圍內的通知數量。檢測新的Android通知
這甚至是可能的,如果是這樣,怎麼樣?
其實,這是可能的,我在我的應用程序中使用它。
您需要註冊一個AccessibilityService並確保用戶啓用服務。
示例服務:
public class InstantMessenger extends AccessibilityService {
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
if (event.getEventType() == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) {
//Do something, eg getting packagename
final String packagename = String.valueOf(event.getPackageName());
}
}
@Override
protected void onServiceConnected() {
if (isInit) {
return;
}
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN;
setServiceInfo(info);
isInit = true;
}
@Override
public void onInterrupt() {
isInit = false;
}
}
新Notification Listener API在採用Android 4.3可讓您做到這一點。
有了這個,對輔助功能攻擊的需求就減少了。它也允許你關閉通知。
通知偵聽器尚未完全工作,例如,您無法從Google導航更新中檢索文本(總是返回null)。這意味着可訪問性'hack'仍然有用 – Fuzzy 2014-04-20 08:40:35
將其更改爲「less need」而不是「no need」 – thoutbeckers 2014-04-22 10:53:31
是否可以*以任何方式更改通知?我想使應用程序的通知無法通過該應用程序提取 – squirrel 2015-06-18 19:18:53
這很酷。不知道。謝謝! – koopaking3 2012-03-09 17:11:30
@Sean注意:要啓動「AccessibilityService」,用戶需要打開設置 - 輔助功能,啓用輔助功能,然後單獨啓用您的服務。此時,他們會收到以下消息:「此無障礙服務可能能夠收集您鍵入的所有文本,包括除密碼之外的個人數據信用卡,還可能會記錄您的用戶界面交互,它來自應用程序xxx 。 使用...?」除非您將此用於個人用途或商業用途,否則這可能會對市場用戶產生很大的信任。只是想給你一個大的圖片 – koopaking3 2012-03-09 17:13:17
並不意味着你不應該使用它,只是在開始投入工作之前意識到建立你自己的 – koopaking3 2012-03-09 17:14:35