recherche

Maison  >  Questions et réponses  >  le corps du texte

Pourquoi le même code affiche-t-il des résultats différents sur différentes versions de téléphones Android ?

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_u1582phpcn_u15822711 Il y a quelques jours1030

répondre à tous(2)je répondrai

  • ringa_lee

    ringa_lee2017-06-17 09:18:14

    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.

    répondre
    0
  • 为情所困

    为情所困2017-06-17 09:18:14

    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.

    répondre
    0
  • Annulerrépondre