android – 以编程方式单击通知
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android – 以编程方式单击通知,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2994字,纯文字阅读大概需要5分钟。
内容图文
![android – 以编程方式单击通知](/upload/InfoBanner/zyjiaocheng/711/0a4413bd95fb4651989c5af6352ddfbf.jpg)
我收到后点击通知点击.
我可以使用辅助功能服务拖动通知抽屉.
单击通知我正在使用accessibilityEvent.getSource()和
accessibilityNodeInfo.performAction(AccessibilityNodeInfo.ACTION_CLICK);
我的代码:
public class MyAccessibilityService extends AccessibilityService {
/**
* On receiving the AccessibilityEvent performs the Actions
*
* @param event
*/
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
Log.i(TAG, "Get the Accessibility Event");
if (event.getEventType() == AccessibilityEvent.TYPE_TOUCH_INTERACTION_END) {
handleTypeTouchInteractionEndEvents(event);
}
if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {
handleTypeWindowStateChangedEvents(event);
}
}
@Override
public void onServiceConnected() {
AccessibilityServiceInfo accessibilityServiceInfo = new AccessibilityServiceInfo();
accessibilityServiceInfo.eventTypes = AccessibilityEvent.TYPE_TOUCH_INTERACTION_END | AccessibilityEvent.TYPE_VIEW_CLICKED |
AccessibilityEvent.TYPE_VIEW_FOCUSED | AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED | AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
accessibilityServiceInfo.feedbackType = AccessibilityServiceInfo.CAPABILITY_CAN_PERFORM_GESTURES;
accessibilityServiceInfo.flags = AccessibilityServiceInfo.DEFAULT | AccessibilityServiceInfo.FLAG_RETRIEVE_INTERACTIVE_WINDOWS;
accessibilityServiceInfo.notificationTimeout = NOTIFICATION_TIME_OUT;
this.setServiceInfo(accessibilityServiceInfo);
}
@Override
public void onInterrupt() {
//Do Nothing
}
/**
* Performs the action for TYPE_TOUCH_INTERACTION_END events
*
* @param accessibilityEvent
*/
private void handleTypeTouchInteractionEndEvents(AccessibilityEvent accessibilityEvent) {
switch (accessibilityEvent.getAction()) {
case EXPAND_NOTIFICATIONS_DRAWER:
Log.i(TAG, "perfroming expand notification bar"); performGlobalAction(AccessibilityService.GLOBAL_ACTION_NOTIFICATIONS);
break;
default:
Log.i(TAG, "Event type not defined");
}
}
private void handleTypeWindowStateChangedEvents(AccessibilityEvent accessibilityEvent) {
switch (accessibilityEvent.getAction()) {
case ACTION_CLICK:
Log.i(TAG, "Performing click Action");
findNotificationIconAndClick("com.my.app:id/notification_icon", accessibilityEvent);
Log.i(TAG, "Click Action is successfull");
default:
Log.i(TAG, "Event type not defined");
}
}
public void findNotificationIconAndClick(String id, AccessibilityEvent accessibilityEvent) {
AccessibilityNodeInfo accessibilityNodeInfo = accessibilityEvent.getSource();
List<AccessibilityNodeInfo> nodeInfoList = accessibilityNodeInfo.findAccessibilityNodeInfosByViewId(id);
if (nodeInfoList != null && !nodeInfoList.isEmpty()) {
for (AccessibilityNodeInfo nodeInfo : nodeInfoList) {
if (nodeInfo != null) {
performClick(nodeInfo);
break;
}
}
}
}
}
我是新手使用辅助功能服务.有人可以告诉我,我是否有任何错误,或者是否无法使用辅助功能服务点击通知?如果不使用辅助功能服务点击通知,还有其他可能吗?
解决方法:
并非所有辅助功能事件都会返回源.事实上,大多数(或至少是最常发生的事件)不会.确保您在配置中限制合理的事件子集和/或对event.getSource()进行空检查.
内容总结
以上是互联网集市为您收集整理的android – 以编程方式单击通知全部内容,希望文章能够帮你解决android – 以编程方式单击通知所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。