J'ai écrit un AccessibilityService pour contrôler WeChat. Mais dans le processus qui a suivi, j'ai rencontré la situation suivante : certains codes fonctionnaient sur une machine Android 4.4 (téléphone A, Huawei Honor 6+, Android 4.4) et sur une machine Android 7.0 (téléphone B, Huawei P9). donc 2 problèmes se posent.
1. Exécutez le code AccessibilityService sur le téléphone mobile, qui comporte les deux lignes suivantes :
Log.d(TAG, "获取事件-->Log.d" + event);
Log.w(TAG, "获取事件-->Log.w" + event);
Sur le téléphone mobile A, LogCat peut afficher deux journaux, mais sur le téléphone mobile B, il ne peut afficher qu'un seul journal.
2. Lors de l'obtention du nœud de fenêtre :
AccessibilityNodeInfo nodeInfo = getRootInActiveWindow();
if(nodeInfo == null) {
Log.w(TAG, "rootWindow为空");
return ;
}
Sur le téléphone mobile A (Huawei Honor 6+, Android 4.4), les informations de nœud de WeChat (com.tencent.mm) peuvent être obtenues, mais sur le téléphone mobile B (Huawei P9, Android 7.0), l'interface système (ui. lanceur) s'affiche) informations sur le nœud. Très confus.
Tous les codes sont les suivants :
public class AcceServ extends AccessibilityService {
private String TAG = getClass().getSimpleName();
private boolean isFinish = false;
private int index = 1;
protected void onServiceConnected()
{
super.onServiceConnected();
Log.d(TAG, "onServiceConnected!" );
Log.w(TAG, "onServiceConnected!" );
Toast.makeText(AcceServ.this,"连接服务成功。请开启AcceServ", Toast.LENGTH_LONG).show();}
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
final int eventType = event.getEventType();
Log.d(TAG, "获取事件-->" + event);
Log.w(TAG, "获取事件-->" + event);
AccessibilityNodeInfo nodeInfo = getRootInActiveWindow();
if(nodeInfo == null) {
Log.w(TAG, "rootWindow为空");
return ;}
do_some_thing();}
@Override
public void onInterrupt() {}
}
Cela ne devrait pas poser de problème avec votre code. De nombreuses choses ont été modifiées dans le système d'interface utilisateur de chaque entreprise, il est donc impossible de connaître la situation réelle.
Merci pour l'invitation.
Je n'ai jamais joué avec le service AccessibilityService. Je veux dire :
1. Dois-je activer les autorisations ? Accédez d’abord à la gestion des autorisations pour voir si les autorisations sont activées.
2. Comme ci-dessus, il peut s'agir d'un problème de ROM.