Rumah  >  Soal Jawab  >  teks badan

Mengapakah kod yang sama memaparkan hasil yang berbeza pada versi telefon Android yang berbeza?

Saya menulis AccessibilityService untuk mengawal WeChat. Tetapi dalam proses seterusnya, saya menghadapi situasi berikut: beberapa kod dijalankan pada mesin Android 4.4 (telefon A, Huawei Honor 6+, Android 4.4) dan pada mesin Android 7.0 (telefon B, Huawei P9 Tidak sama,). jadi 2 masalah timbul.

1 Jalankan kod AccessibilityService pada telefon mudah alih, yang mempunyai dua baris berikut:

Log.d(TAG, "获取事件-->Log.d" + event);
Log.w(TAG, "获取事件-->Log.w" + event);

Pada telefon bimbit A, LogCat boleh memaparkan dua log, tetapi pada telefon bimbit B, ia hanya boleh memaparkan satu log.

2. Apabila mendapat nod tingkap:

 AccessibilityNodeInfo nodeInfo = getRootInActiveWindow();
        if(nodeInfo == null) {
            Log.w(TAG, "rootWindow为空");
            return ;
        }

Pada telefon mudah alih A (Huawei Honor 6+, Android 4.4), maklumat nod WeChat (com.tencent.mm) boleh diperolehi, tetapi pada telefon mudah alih B (Huawei P9, Android 7.0), antara muka sistem (ui. laucher) dipaparkan ) maklumat nod. sangat keliru.


Semua kod adalah seperti berikut:


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_u15822651 hari yang lalu969

membalas semua(2)saya akan balas

  • ringa_lee

    ringa_lee2017-06-17 09:18:14

    Ia sepatutnya tidak menjadi masalah dengan kod anda Banyak perkara telah diubah dalam Sistem UI setiap syarikat, jadi adalah mustahil untuk mengetahui situasi sebenar.

    balas
    0
  • 为情所困

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

    Terima kasih atas jemputan.
    Saya tidak pernah bermain dengan perkhidmatan AccessibilityService Saya ingin mengatakan:
    1. Mula-mula pergi ke pengurusan kebenaran untuk melihat sama ada kebenaran didayakan.
    2 Sama seperti di atas, mungkin masalah ROM.

    balas
    0
  • Batalbalas