Как выполнить щелчок по элементу списка других приложений с помощью службы специальных возможностей, например приложенияAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как выполнить щелчок по элементу списка других приложений с помощью службы специальных возможностей, например приложения

Сообщение Anonymous »

Я разрабатываю такое приложение, как VoiceAccess. Используя службу доступности, я могу выполнять все клики, которые находятся в верхней части активности (сторонние приложения). Но я столкнулся с проблемой с кликами ListItem. Я пробую этот код для приложения Facebook. ниже мой код. Может ли кто-нибудь мне помочь в этом?

Код: Выделить всё

public class MyService extends AccessibilityService {

/**/
private SharedPreferences S_PREF;
private SharedPreferences.Editor editor;

private static final String TAG = MyService.class
.getSimpleName();

@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
clickPerform(getRootInActiveWindow(), 0);
}

public void clickPerform(AccessibilityNodeInfo nodeInfo, final int depth) {

if (nodeInfo == null) return;

List list = nodeInfo
.findAccessibilityNodeInfosByViewId("com.facebook.katana:id/bookmarks_tab");
for (AccessibilityNodeInfo node : list) {

Log.i(TAG, "ViewID-: bookmarks_tab " + node.getChild(0));

if (S_PREF.getBoolean("fb_menu", false)) {
editor.putBoolean("fb_menu", false);
node.performAction(AccessibilityNodeInfo.ACTION_CLICK);
}
}
List list2 = nodeInfo
.findAccessibilityNodeInfosByViewId("com.facebook.katana:id/bookmarks_list");
for (AccessibilityNodeInfo node2 : list2) {
if (node2.getChild(0) != null)
if (S_PREF.getBoolean("fb_scroll_down", false)) {
editor.putBoolean("fb_scroll_down", false);
node2.performAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD);
}
}
editor.commit();
for (int i = 0; i < nodeInfo.getChildCount(); ++i) {
clickPerform(nodeInfo.getChild(i), depth+1);
}
}

@Override
public void onInterrupt() {

}

protected void onServiceConnected() {
S_PREF = getSharedPreferences("S_PREF", Context.MODE_PRIVATE);
editor = S_PREF.edit();
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.flags = AccessibilityServiceInfo.DEFAULT;
info.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED | AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
setServiceInfo(info);
Toast.makeText(getApplicationContext(), "onServiceConnected", Toast.LENGTH_SHORT).show();
}
}
Ниже показан экран VoiceAccess.
Изображение
Когда пользователь называет любое число, будет выполнен щелчок по определенному элементу.
Я могу получить 7,8,9,10 событий, но начиная с 11 я не получаю элементы списка по отдельности. Мой код возвращает только идентификатор списка.
Заранее спасибо....

Подробнее здесь: https://stackoverflow.com/questions/459 ... like-voice
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»