android - 如何打开系统 Activity 并单击那里的按钮?

标签 android android-activity root

像 greenify 这样的应用程序如何打开系统 Activity 并单击那里的按钮? activity是“App Info”,自动点击“Force Stop”按钮。并且该应用程序可以点击该 Activity 中的按钮无需root

打开 Activity “App Info”的代码如下:

    Intent intent = new Intent();
    intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
    Uri uri = Uri.fromParts("package", "com.package.sendinput", null);
    intent.setData(uri);
    startActivityForResult(intent, 0);

然后 Activity 开始了。要单击那里的按钮,我尝试执行 adb shell input tap 200 340(使用与我正在运行的应用程序相同的 uid),但被系统“杀死”。但是用root可以点击按钮。

还有其他办法吗?

提前致谢

最佳答案

编辑:(猜测工作,因为我自己没有做过这样的事情)

Greenify 自动化是通过作为 Accessibility 服务运行来完成的。简而言之,它检索窗口的当前内容并将 AccessibilityEvent 发送到指定的 View ,例如:触摸、焦点。

内容窗口被描述为AccessibilityWindowInfo,它可以是TYPE_APPLICATIONTYPE_INPUT_METHODTYPE_SYSTEM

为了将事件发送到窗口,它使用 AccessibilityManagerAccessibilityEvent 发送到您在 AccessibilityWindowInfo 中检索到的任何 subview

阅读: UiAutomation

Accessibility package

关于android - 如何打开系统 Activity 并单击那里的按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27502559/

相关文章:

java - 有没有办法在 Android 上对 java 进程的部分进行沙箱处理?

java - 在Activity里面创建一个Activity?

mysql - 如何创建root管理用户root :rootroot for MySQL?

android - 如何在没有 root 访问权限的情况下获取已安装应用程序的 APK?

android - 从 ListView 的 Eclipse 图形编辑器预览中删除 "Item x"

Android:如何从 Eclipse ADT 应用程序项目中引用库项目?

Android Asynctask 在 Fragment Tabs 中运行两次

android - 如何通过 Intent 从我自己的 Activity 中启动 connectbot

java - SecondActivity 未接收值 - Intent 相关

c - 如何以 root 身份以非交互方式运行 exec() 函数?