| | |
| | | import android.accessibilityservice.AccessibilityServiceInfo; |
| | | import android.annotation.SuppressLint; |
| | | import android.content.BroadcastReceiver; |
| | | import android.content.ClipboardManager; |
| | | import android.content.Context; |
| | | import android.content.Intent; |
| | | import android.content.IntentFilter; |
| | |
| | | @Override |
| | | public void onReceive(Context context, Intent intent) { |
| | | int action = intent.getIntExtra("action", 0); |
| | | ClipboardManager cmb = (ClipboardManager) context .getSystemService(Context.CLIPBOARD_SERVICE); |
| | | Log.e(TAG, "onReceive action: " + action); |
| | | switch (action){ |
| | | case ACTION_SEND: |
| | | //List<AccessibilityNodeInfo> nodeInfos = getRootInActiveWindow().findAccessibilityNodeInfosByViewId("com.ss.android.ugc.aweme:id/llp"); |
| | | AccessibilityNodeInfo sendNode = getViewByDesc(getRootInActiveWindow(),"发送"); |
| | | Log.e(TAG, "ACTION_SEND nodeInfos: " + sendNode); |
| | | Log.e(TAG, "ACTION_SEND "+cmb.getText()+" nodeInfos: " + sendNode); |
| | | if(sendNode != null){ |
| | | Log.e(TAG, "ACTION_SEND nodeInfos: " + sendNode.getClassName()); |
| | | sendNode.performAction(AccessibilityNodeInfo.ACTION_CLICK); |
| | | }else{ |
| | | printView(getRootInActiveWindow()," "); |
| | | //printView(getRootInActiveWindow()," "); |
| | | Toast.makeText(getBaseContext(),"未找到控件",Toast.LENGTH_SHORT).show(); |
| | | } |
| | | break; |
| | | case ACTION_PASTE: |
| | | try{ |
| | | List<AccessibilityNodeInfo> list = getRootInActiveWindow().findAccessibilityNodeInfosByText("说点什么..."); |
| | | Log.e(TAG, "ACTION_PASTE nodeInfos: " + list.size()); |
| | | printView(getRootInActiveWindow()," "); |
| | | Log.e(TAG, "ACTION_PASTE "+cmb.getText()+" nodeInfos: " + list.size()); |
| | | //printView(getRootInActiveWindow()," "); |
| | | AccessibilityNodeInfo editNode = getView(getRootInActiveWindow(),"android.widget.EditText"); |
| | | if(editNode != null){ |
| | | Log.e(TAG, "ACTION_PASTE nodeInfos: " + editNode.getClassName()); |
| | |
| | | switch (eventType) { |
| | | case AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED://界面变化事件 |
| | | Log.e(TAG, "TYPE_WINDOW_CONTENT_CHANGED " ); |
| | | if(event.getClassName().toString().equals("androidx.viewpager.widget.ViewPager")){ |
| | | if(event.getClassName().toString().equals("androidx.viewpager.widget.ViewPager") && flag){ |
| | | clickEdit(); |
| | | } |
| | | break; |
| | | case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED://界面变化事件 |
| | | Log.e(TAG, "TYPE_WINDOW_STATE_CHANGED " ); |
| | | if(source != null && event.getClassName().toString().equals("com.ss.android.ugc.aweme.live.LivePlayActivity")){ |
| | | if(source != null && event.getClassName().toString().equals("com.ss.android.ugc.aweme.live.LivePlayActivity") && flag){ |
| | | clickEdit(); |
| | | } |
| | | |
| | |
| | | Log.e(TAG,"执行点击 "+list.get(0).getPaneTitle()); |
| | | } |
| | | }else if(flag){ |
| | | Toast.makeText(getBaseContext(),"未找到控件",Toast.LENGTH_SHORT).show(); |
| | | //Toast.makeText(getBaseContext(),"未找到控件",Toast.LENGTH_SHORT).show(); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | @SuppressLint("NewApi") |
| | | private AccessibilityNodeInfo getViewByDesc(AccessibilityNodeInfo node, String desc){ |
| | | Log.e(TAG,desc +" getViewByDesc id:"+node.getViewIdResourceName() +" class:"+node.getClassName()+" text:"+node.getText()+" "+node.getContentDescription()); |
| | | Log.e(TAG,"getViewByDesc node:"+node); |
| | | if(node.getChildCount() > 0){ |
| | | for(int i = 0 ; i < node.getChildCount() ; i ++){ |
| | | if(node.getChild(i) != null) { |
| | | AccessibilityNodeInfo nodeInfo = getViewByDesc(node.getChild(i), desc); |
| | | if(nodeInfo != null){ |
| | | return nodeInfo; |
| | | try{ |
| | | Log.e(TAG,desc +" getViewByDesc id:"+node.getViewIdResourceName() +" class:"+node.getClassName()+" text:"+node.getText()+" "+node.getContentDescription()); |
| | | Log.e(TAG,"getViewByDesc node:"+node); |
| | | if(node.getChildCount() > 0){ |
| | | for(int i = 0 ; i < node.getChildCount() ; i ++){ |
| | | if(node.getChild(i) != null) { |
| | | AccessibilityNodeInfo nodeInfo = getViewByDesc(node.getChild(i), desc); |
| | | if(nodeInfo != null){ |
| | | return nodeInfo; |
| | | } |
| | | } |
| | | } |
| | | }else if(node != null && node.getContentDescription() != null && node.getContentDescription().equals(desc)){ |
| | | return node; |
| | | } |
| | | }else if(node != null && node.getContentDescription() != null && node.getContentDescription().equals(desc)){ |
| | | return node; |
| | | } |
| | | }catch (Exception e){} |
| | | return null; |
| | | } |
| | | private void printWindow(AccessibilityWindowInfo window, String space){ |