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() {}
}
Ia sepatutnya tidak menjadi masalah dengan kod anda Banyak perkara telah diubah dalam Sistem UI setiap syarikat, jadi adalah mustahil untuk mengetahui situasi sebenar.
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.