控制另一个Android应用的UI

时间:2014-10-14 19:00:11

标签: android root sandbox kiosk-mode

我有一个应用程序作为服务和广播接收器运行,具有root和设备管理员访问权限。我需要该应用程序才能控制可能正在运行的任何其他应用程序的UI。例如,我可能想隐藏系统导航栏或覆盖主页按钮,而其他应用程序在前台运行。这是沙盒用户。

有谁能建议我怎么做这样的事情?在您自己的应用程序中隐藏导航栏很容易,当然覆盖按钮也没什么大不了的,但我需要一个应用程序才能为其他应用程序执行此操作。

我正在考虑UI Automator是否可以提供帮助。

我的应用程序(沙箱和将要运行的其他应用程序)是我的,他们都将拥有root权限。如果需要,我还可以在每台设备上构建自己的Android操作系统版本。

-Thanks

1 个答案:

答案 0 :(得分:0)

好的,这需要分两个步骤完成,

  1. 从您的服务创建广播
  2. 在您的UI应用程序中注册广播接收器以收听广播
  3. 在您的服务中执行此操作

    Intent intent = new Intent();
    intent.setAction(BROADCAST_ACTION);
    sendBroadcast(Intent);
    

    在mainActivity中,使用

    registerReceiver(<receiver instance>, BROADCAST_ACTION)
    
    在onStart或onCreate方法中

    这将设置你的mainActivity来收听广播,接下来你需要定义你在上面的注册调用中的广播接收器。

    BroadcastReceiver receiver;
    receiver = new BroadcastReceiver() {
        public void onReceive(Context c, Intent i) {
            //Modify the UI, in this case hide the dialog box.
        }
    }