onAccessibilityEvent(AccessibilityEvent事件)不拦截通知 [英] onAccessibilityEvent(AccessibilityEvent event) not intercepting notification
问题描述
在我的应用程序,我要赶在新收到的电子邮件的按摩通知并说明该事件的屏幕上播放视频。
我使用了 onAccessibilityEvent(AccessibilityEvent事件)
听生成的通知。
我也用下面的$ C $下初始化我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.
推荐答案
我有类似的情况,这部作品在我的应用程序:
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);
}
}
在我的清单:
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>
我的解决方案的部分来源于: 无障碍服务从计算器
Parts of my solution came from: Accessibility Service from StackOverflow
这篇关于onAccessibilityEvent(AccessibilityEvent事件)不拦截通知的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!