Get view of AccessibilityNodeInfo to create overlay

杀马特。学长 韩版系。学妹 提交于 2021-01-20 20:13:58

问题


I'm writing a AccessibilityService and I want to create view overlays on the views from the current activity that the accessibility service can retrieve. I have no problems to retrieve all AccessibilityNodeInfo objects from the current activity, but I have no idea how to get the views from these objects to create overlays. Unfortunately there are only few examples regarding accessibility services. Maybe some of you already have experience with this topic. I hope you can help me! Thanks!

EDIT: A paper shows that overlays over an activity's view contents are possible:

The display overlay is able to perform these tasks thanks to the Android Accessibility Framework [10]. Using the accessibility API, it is able to access and inspect the GUI layout of the applications on the screen, without requiring modifications or the instrumentation of the application code."*

Link: http://www.onarlioglu.com/publications/fc2015babelcrypt.pdf

Page 6 and 8. Thanks!


回答1:


You cannot get the View objects from other apps, as the View objects are in a separate process from yours.




回答2:


Drawing overlays over the window using accessibility services is easy. I know this is an old question, but I thought I'd add the answer anyway.

RelativeLayout relativeLayout = new RelativeLayout(getContext());

WindowManager.LayoutParams topButtonParams = new WindowManager.LayoutParams(
    width, //The width of the screen
    height, //The height of the screen
    WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
    PixelFormat.TRANSLUCENT);

//Just trust me, this alpha thing is important.  I know it's weird on a "translucent" view.
topButtonParams.alpha = 100;

relativeLayout.setLayoutParams(topButtonParams);

mWindowManager.addView(relativeLayout, topButtonParams);

Also, you need this permission in your manifest

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

Once you have an invisible relative layout overlay over the top of the entire screen, adding views to it is easy!



来源:https://stackoverflow.com/questions/28529701/get-view-of-accessibilitynodeinfo-to-create-overlay

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!