onAccessibilityEvent(AccessibilityEvent事件)不拦截通知 [英] onAccessibilityEvent(AccessibilityEvent event) not intercepting notification
问题描述
在我的应用程序中,我必须抓住新的电子邮件按摩通知,并在屏幕上播放描述该事件的视频。
我正在使用 onAccessibilityEvent(AccessibilityEvent事件)
来收听生成的通知。
我还使用以下代码为init我的AccessibilityService:
In my application I have to catch the new incoming email massage notification and play a video on the screen which describe the event.
I'm using the onAccessibilityEvent(AccessibilityEvent event)
to listen to the generated notification.
I also use the following code for init my AccessibilityService:
AccessibilityServiceInfo localAccessibilityServiceInfo = new AccessibilityServiceInfo();
localAccessibilityServiceInfo.eventTypes = AccessibilityEvent.TYPES_ALL_MASK; // AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED;
localAccessibilityServiceInfo.notificationTimeout = EVENT_NOTIFICATION_TIMEOUT_MILLIS;
localAccessibilityServiceInfo.feedbackType = AccessibilityServiceInfo.FEEDBACK_AUDIBLE; // AccessibilityServiceInfo.FEEDBACK_VISUAL;
localAccessibilityServiceInfo.flags &= AccessibilityServiceInfo.DEFAULT;
setServiceInfo(localAccessibilityServiceInfo);
但事件从未到达。
怎么可以解决?
谢谢,
Eyal。
but event never arrived. How it can be solved? Thanks, Eyal.
推荐答案
我有类似的情况,这在我的应用程序中起作用: / p>
I have a similar situation, this works in my application:
import android.accessibilityservice.AccessibilityService;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.util.Log;
import android.view.accessibility.AccessibilityEvent;
import android.widget.Toast;
public class NotificationAccessibilityService extends AccessibilityService
{
public static final String TAG = "volumeMaster";
@Override
public void onAccessibilityEvent(AccessibilityEvent event)
{
Log.v(TAG, "***** onAccessibilityEvent");
Toast.makeText(getApplicationContext(), "Got event from: " + event.getPackageName(), Toast.LENGTH_LONG).show();
}
@Override
public void onInterrupt()
{
Log.v(TAG, "***** onInterrupt");
}
@Override
public void onServiceConnected()
{
Log.v(TAG, "***** onServiceConnected");
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED;
info.notificationTimeout = 100;
info.feedbackType = AccessibilityEvent.TYPES_ALL_MASK;
setServiceInfo(info);
}
}
在我的清单中: p>
And in my manifest:
<service android:name=".accessibility.NotificationAccessibilityService" android:label="@string/app_name" android:enabled="true" android:exported="false">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
</service>
我的解决方案的一部分来自:
StackOverflow的辅助功能服务
Parts of my solution came from: Accessibility Service from StackOverflow
这篇关于onAccessibilityEvent(AccessibilityEvent事件)不拦截通知的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!