Pourquoi le même code affiche-t-il des résultats différents sur différentes versions de téléphones Android ?
phpcn_u1582
phpcn_u1582 2017-06-17 09:16:14
0
2
1063

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() {}
  
}

phpcn_u1582
phpcn_u1582

répondre à tous(2)
左手右手慢动作

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal