下面列出了怎么用android.view.accessibility.AccessibilityRecord的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* 描述:验证是否现在是在聊天页面,可以进行抢红包处理
* 作者:卜俊文
* 邮箱:[email protected]
* 日期:2017/11/3 上午11:52
*
* @param event
*/
public boolean invalidEnvelopeUi(AccessibilityEvent event) {
//判断类名是否是聊天页面
if (!QQConstant.QQ_IM_CHAT_ACTIVITY.equals(event.getClassName().toString())) {
return true;
}
//判断页面中的元素是否有点击拆开的文本,有就返回可以进行查询了
int recordCount = event.getRecordCount();
if (recordCount > 0) {
for (int i = 0; i < recordCount; i++) {
AccessibilityRecord record = event.getRecord(i);
if (record == null) {
break;
}
List<CharSequence> text = record.getText();
if (text != null && text.size() > 0 && text.contains(QQConstant.QQ_CLICK_TAKE_APART)) {
//如果文本中有点击拆开的字眼,就返回可以进行查询了
return true;
}
}
}
return false;
}
private static String recordToString(AccessibilityRecord record) {
StringBuilder builder = new StringBuilder();
builder.append(" [ ClassName: " + record.getClassName());
builder.append("; \tText: " + record.getText());
builder.append("; \tContentDescription: " + record.getContentDescription());
builder.append("; \tItemCount: " + record.getItemCount());
builder.append("; \tCurrentItemIndex: " + record.getCurrentItemIndex());
builder.append("; \tIsEnabled: " + record.isEnabled());
builder.append("; \tIsPassword: " + record.isPassword());
builder.append("; \tIsChecked: " + record.isChecked());
builder.append("; \tIsFullScreen: " + record.isFullScreen());
builder.append("; \tScrollable: " + record.isScrollable());
builder.append("; \tBeforeText: " + record.getBeforeText());
builder.append("; \tFromIndex: " + record.getFromIndex());
builder.append("; \tToIndex: " + record.getToIndex());
builder.append("; \tScrollX: " + record.getScrollX());
builder.append("; \tScrollY: " + record.getScrollY());
builder.append("; \tAddedCount: " + record.getAddedCount());
builder.append("; \tRemovedCount: " + record.getRemovedCount());
builder.append("; \tParcelableData: " + record.getParcelableData());
AccessibilityNodeInfo source = record.getSource();
builder.append("; \n\tsource: " + (source == null ? "NULL" : source.hashCode()));
builder.append(" ]");
if (source != null) {
source.recycle();
}
return builder.toString();
}
private static String eventToString(AccessibilityEvent ev) {
StringBuilder builder = new StringBuilder();
builder.append("EventType: ").append(AccessibilityEvent.eventTypeToString(ev.getEventType()));
//builder.append("; EventTime: ").append(ev.getEventTime());
builder.append("; PackageName: ").append(ev.getPackageName());
builder.append("; ClassName: ").append(ev.getClassName());
// builder.append("; MovementGranularity: ").append(ev.getMovementGranularity());
builder.append("; Action: ").append(ev.getAction());
builder.append("; ContentChangeTypes: ");//.append(ev.getContentChangeTypes());
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
int cct = 0;
cct = ev.getContentChangeTypes();
boolean hasCONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = ((cct & AccessibilityEvent.CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION) == AccessibilityEvent.CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION);
boolean hasCONTENT_CHANGE_TYPE_SUBTREE = ((cct & AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE) == AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE);
boolean hasCONTENT_CHANGE_TYPE_TEXT = ((cct & AccessibilityEvent.CONTENT_CHANGE_TYPE_TEXT) == AccessibilityEvent.CONTENT_CHANGE_TYPE_TEXT);
boolean hasCONTENT_CHANGE_TYPE_UNDEFINED = ((cct & AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED) == AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED);
if (hasCONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION) {
builder.append(" DESCRIPTION,");
}
if (hasCONTENT_CHANGE_TYPE_SUBTREE) {
builder.append(" SUBTREE,");
}
if (hasCONTENT_CHANGE_TYPE_TEXT) {
builder.append(" TEXT,");
}
if (hasCONTENT_CHANGE_TYPE_UNDEFINED) {
builder.append(" UNDEFINED,");
}
builder.append("\n");
} else {
builder.append("[ContentChangeType Not available on SDK " + android.os.Build.VERSION.SDK_INT);
}
builder.append(" Record X:");
builder.append(recordToString(ev));
if (true) {
builder.append("\n");
//builder.append("; sourceWindowId: ").append(mSourceWindowId);
//if (mSourceNode != null) {
// builder.append("; mSourceNodeId: ").append(mSourceNode.getSourceNodeId());
//}
for (int i = 0; i < ev.getRecordCount(); i++) {
final AccessibilityRecord record = ev.getRecord(i);
builder.append(" Record ");
builder.append(i);
builder.append(":");
builder.append(recordToString(record));
builder.append("\n");
}
} else {
builder.append("; recordCount: ").append(ev.getRecordCount());
}
return builder.toString();
}
public static Object obtain() {
return AccessibilityRecord.obtain();
}
public static void setChecked(Object record, boolean isChecked) {
((AccessibilityRecord) record).setChecked(isChecked);
}
public static void setScrollY(Object record, int scrollY) {
((AccessibilityRecord) record).setScrollY(scrollY);
}
public static int a(Object obj)
{
return ((AccessibilityRecord)obj).getMaxScrollX();
}
public static void setRemovedCount(Object record, int removedCount) {
((AccessibilityRecord) record).setRemovedCount(removedCount);
}
public static void setContentDescription(Object record, CharSequence contentDescription) {
((AccessibilityRecord) record).setContentDescription(contentDescription);
}
public static int getWindowId(Object record) {
return ((AccessibilityRecord) record).getWindowId();
}
public static int getScrollY(Object record) {
return ((AccessibilityRecord) record).getScrollY();
}
public static void setEnabled(Object record, boolean isEnabled) {
((AccessibilityRecord) record).setEnabled(isEnabled);
}
public static boolean isScrollable(Object record) {
return ((AccessibilityRecord) record).isScrollable();
}
public static CharSequence getBeforeText(Object record) {
return ((AccessibilityRecord) record).getBeforeText();
}
public static CharSequence getClassName(Object record) {
return ((AccessibilityRecord) record).getClassName();
}
public static CharSequence getContentDescription(Object record) {
return ((AccessibilityRecord) record).getContentDescription();
}
public static void setPassword(Object record, boolean isPassword) {
((AccessibilityRecord) record).setPassword(isPassword);
}
public static int getFromIndex(Object record) {
return ((AccessibilityRecord) record).getFromIndex();
}
public static void setAddedCount(Object record, int addedCount) {
((AccessibilityRecord) record).setAddedCount(addedCount);
}
public static void setSource(Object record, View source) {
((AccessibilityRecord) record).setSource(source);
}
public static int getRemovedCount(Object record) {
return ((AccessibilityRecord) record).getRemovedCount();
}
public static int getScrollX(Object record) {
return ((AccessibilityRecord) record).getScrollX();
}
public static int getRemovedCount(Object record) {
return ((AccessibilityRecord) record).getRemovedCount();
}
public static Object getSource(Object record) {
return ((AccessibilityRecord) record).getSource();
}
public static int getCurrentItemIndex(Object record) {
return ((AccessibilityRecord) record).getCurrentItemIndex();
}
public static int getToIndex(Object record) {
return ((AccessibilityRecord) record).getToIndex();
}
public static int getWindowId(Object record) {
return ((AccessibilityRecord) record).getWindowId();
}
public static int getScrollY(Object record) {
return ((AccessibilityRecord) record).getScrollY();
}
public static void setToIndex(Object record, int toIndex) {
((AccessibilityRecord) record).setToIndex(toIndex);
}
public static int getScrollX(Object record) {
return ((AccessibilityRecord) record).getScrollX();
}