如何使用 KeyEvent 定位正在运行的应用程序?

2024-03-05

我的目标是通过键事件来定位在后台服务的前台或后台运行的特定应用程序。

我尝试了很多解决方案,但还没有成功。

尝试的几个解决方案(全部来自后台运行的服务):


通过广播,我尝试定位第一个管理关键事件的应用程序(例如电话应用程序)

KeyEvent lKey1Up = new KeyEvent(KeyEvent.ACTION_UP,KeyEvent.KEYCODE_ENDCALL);
KeyEvent lKey1Dwn = new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_ENDCALL);
Intent lKey1UpIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
Intent lKey1DwnIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
lKey1UpIntent.putExtra(Intent.EXTRA_KEY_EVENT, lKey1Up);
lKey1DwnIntent.putExtra(Intent.EXTRA_KEY_EVENT, lKey1Dwn );
sendOrderedBroadcast(lKey1UpIntent, null);
sendOrderedBroadcast(lKey1DwnIntent, null);

=> 当我处于通话状态(摘机)时执行广播时,我的前台电话应用程序没有任何反应。事实上,我几乎确定这行不通,因为我无法专门针对手机应用程序。


With 仪器仪表,我尝试定位具有焦点的应用程序:

Instrumentation lInst  = new Instrumentation();
KeyEvent lKey1Up = new KeyEvent(KeyEvent.ACTION_UP,KeyEvent.KEYCODE_1);
KeyEvent lKey1Dwn = new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_1);
lInst.sendKeySync(lKey1Up);
lInst.sendKeySync(lKey1Dwn);

还尝试过一次调用:

lInst.sendKeyDownUpSync(KeyEvent.KEYCODE_1)

=> 应用程序崩溃(也在打电话期间) 看起来我不能出于测试目的使用 Instrumentation


最终,我想到使用

superDispatchKeyEvent(KeyEvent)

但由于我不知道如何从目标运行的应用程序中定位特定窗口(事实上,我的服务中没有),所以我根本不知道如何使用它。


在有人问之前,我添加了

android.permission.INJECT_EVENTS
android.permission.MODIY_PHONE_STATE

在我的清单中,以确保我所做的一切都是“允许的”。

然后...首先感谢您阅读到这里,现在:

  • 你们中的一些人知道我怎样才能做到 确实针对特定应用程序 来自服务的击键事件?
  • 你们中的一些人知道如何具体使用电话应用程序执行相同的操作吗?

在此先感谢您的帮助。


我的目标是通过键事件来定位在后台服务的前台或后台运行的特定应用程序。

这是不可能的,因为这是一个安全漏洞。允许应用程序 A 将关键事件注入应用程序 B 会引发各种丑陋的恶意软件的可能性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 KeyEvent 定位正在运行的应用程序? 的相关文章

  • 如何从android ble扫描结果中获取CRC?

    我每次都从 ble 设备收到 62 字节的扫描结果 使用下面的回调代码获取扫描结果 我可以获取 RSSI 但无法获取 CRC 或者 获取一帧的CRC的逻辑是什么 来自 ble 设备的数据格式 如数据包标头 广告数据 CRC RSSI 如何从
  • Android TelecomManager 中的 addIncomingCall 没有执行任何操作

    我正在尝试使用本机 Android 来电 UI 我有一个连接服务 并且我已经成功注册了一个电话帐户 但在我调用方法 addNewIncomingCall 后什么也没有发生 对我所缺少的有什么想法吗 显现
  • 用于 Kotlin 中单元测试的 BuildConfigField 模拟

    我正在尝试尽可能多地涵盖Kotlin Android 库我遇到了有关自定义 BuildConfig 变量的问题 更广为人知的是buildConfigField 我想模拟这个变量来测试两者true and false values 从 Gra
  • 使用同一个侦听器的多个活动

    我有 4 个活动 它们都包含一个 xml 页脚 其中包含 4 个按钮 每个活动一个 我现在想为这些按钮设置 onclicklistener 它是页脚中的自制菜单 问题是 如何使用侦听器以便重用代码 我有两个想法 创建一个实现 onclick
  • 虚拟回调接口

    在 Eclipse 为您创建的来自 Google 的示例主从流代码中 片段中包含以下内容 private Callbacks mCallbacks sDummyCallbacks public interface Callbacks pub
  • 如何在 Android 应用程序中隐藏 Flutterwave API 密钥

    我正在构建一个 Android 应用程序 目前正在将 Flutterwave 集成到我的应用程序中以进行支付 建议我永远不要将 Flutterwave API 密钥放在我的应用程序上 那么我该如何隐藏这些键呢 我正在使用 Retrofit
  • 写入 Android UI Automator 输出控制台

    我正在 Android UI Automator 上编写一个小包装器 通常我们可以在控制台看到测试用例的状态 我可以访问它并添加我自己的消息吗 我努力了System out println 但这没有用 有什么办法可以做到这一点吗 您可以使用
  • 如何在Android中的DataBinding的ViewModel类中获取R.string

    我目前正在使用databinding对于我的 Android 应用程序项目 我想设置error留言在我的CustomTextView from R string txtOldPassWordError并从另一个名为的类中进行设置ViewMo
  • 如何使用 Google 的 GithubBrowserSample 方法在片段之间共享视图模型?

    我对 Android 架构组件的使用非常陌生 因此我决定使用 GithubBrowserSample 来构建我的应用程序来实现我的许多用例 但我有一个问题 我不知道使用这种方法在片段之间共享视图模型的正确方法是什么 我想共享视图模型 因为我
  • 更改语言 Flutter 的按钮

    我正在 Flutter 中构建一个应用程序 到目前为止 我正在使用 JSON 国际化 其中应用程序的语言基于用户手机中默认的语言 它工作得很好 但我想给用户有机会在不更改手机系统语言设置的情况下更改语言 只需单击按钮 然后应用程序即可更改语
  • 如何清除Android剪贴板?

    我发现的方法都不起作用 这是我尝试过的 1 使用clearPrimaryClip 的方法ClipboardManager class ClipboardManager clipboard ClipboardManager getSystem
  • 如何绘制部分位图圆弧?类似于圆形进度轮,但具有显示得越来越多的位图。

    我正在寻找的是一种以顺时针圆形方式显示图像的视图 当进度为 25 时 应显示前 90 度 当进度为 100 时 应绘制完整的 360 度 它与使用 canvas drawArc 非常接近 但此方法仅适用于 Paint 对象 不适用于位图 其
  • Android 和 Google 地图内部片段以及其他控件和 viewpager

    我是android编程新手 我有一个带有 3 个页面 片段 的小应用程序 使用 pageradapter 和 viewpager 在它们之间滑动 其中一个页面包含复选框 和其他控件 和地图 我的问题是程序在启动时崩溃 Fragment co
  • 如何在android中的谷歌地图上聚焦标记

    我只是想知道我们是否可以关注 Android 应用程序中添加的标记 如果是 怎么办 或者有没有其他方法可以完成这项任务 可以说我使用下面的代码添加了一个标记 map addMarker new MarkerOptions title tit
  • 使用 Proguard 通过 Dropbox.com 库混淆 Android 应用程序

    我刚刚创建了一个需要 Dropbox com API 库的 Android 应用程序 我现在尝试在 发布 模式下构建应用程序 并希望在代码上运行混淆器以对其进行混淆 但是 每当我尝试运行 Proguard 时 都会收到以下错误 Progua
  • 活动加载缓慢

    我的应用程序中有大约 50 个活动 但其中一个活动非常慢 我的意思是当我按下按钮进入该活动时 需要很长时间 有时会出现黑屏 在该活动中 我有一个按钮 如果我单击该按钮 则需要很长时间才能执行 代码很轻 只有一个Button EditText
  • Expresso 的 Android 测试首选项片段

    我在通过 Expresso 测试我的代码时遇到问题 我写了这段代码 public class SettingsActivity extends Activity Override protected void onCreate Bundle
  • 文本视图不显示全文

    我正在使用 TableLayout 和 TableRow 创建一个简单的布局 其中包含两个 TextView 这是代码的一部分
  • 动态更改按钮上的图像视图

    在我的应用程序中 我有按钮和ImageView 当我按下按钮时我想改变ImageView 我的可绘制文件夹中有 5 张图像 按下按钮时 ImageView 根据按钮单击一张一张地更改图像 我想要它的解决方案 感谢任何可以提供帮助的人 维护一
  • Android:透明活动问题

    最近 在我们的一款生产应用程序上 透明活动已停止工作 我的意思是它变成了黑色背景而不是透明背景 当我将活动的背景颜色设置为纯色 即红色 绿色等 时 它的应用不会出现问题 该问题可能是由于迁移到 AndroidX 引起的 但我没有这方面的证据

随机推荐

  • 加密和解密密码的最佳实践? (C#/.NET)

    我需要在 最好是文本 文件中存储和加密密码 稍后我需要能够解密该密码 该密码用于我使用的另一项服务 需要以明文形式 通过 SSL 发送到那里 这不是我能改变的 该领域的最佳实践是什么 如何才能在一定程度上保护密码免受恶意用户的侵害 我的平台
  • 如何在libavcodec中设置解码像素格式?

    我使用以下代码通过 libavcodec 解码视频 Open input file if avformat open input ctx filename NULL NULL 0 return FALSE Couldn t open fil
  • Angular 2 - 如何嵌入 youtube 视频

    我得到了这个代码 div div class video container div div 问题 角度将输出src localhost 8001 代替src https www youtube com embed hr4BbdUiTUM
  • 如何在 PHP 中使用 Postgresql 白名单和准备语句?

    我知道我需要在我的 php 代码中实现白名单和准备好的语句 但我不确定如何使用 Postgresql 执行此操作 这对我的代码来说真的有必要吗 我使用选择列表将用户选择的值传递给查询
  • UTF-8 和 ISO 8859-9

    在过去的几天里 我一直在阅读有关 UTF 8 和 unicode 的内容 当我以为我已经了解了这一切时 当我读到 UTF 8 和 ISO 8859 9 不兼容时 我感到很困惑 我有一个以 UTF 8 格式存储数据的数据库 客户要求我支持各种
  • C/C++ 中的梅尔频率倒谱系数 (MFCC)

    C C 中是否有 MFCC 的实现 有源代码或库吗 我已经找到了http code google com p libmfcc http code google com p libmfcc 这看起来不错 2016年回顾 libmfcc很简单
  • 从 Apache Spark 分段上传到 Amazon S3

    将数据保存到 Amazon S3 时 如何使 Apache Spark 使用分段上传 Spark使用以下方式写入数据RDD saveAs File方法 当目的地开始时s3n Spark 自动使用 JetS3Tt 进行上传 但对于大于 5G
  • 构建 OpenSSL x64 静态库时出现错误“错误 A2009:表达式中的语法错误”

    我需要 Openssl 的静态库 我按照以下指示进行操作here https stackoverflow com questions 158232 how do you compile openssl for x64 我所做的步骤如下 运行
  • 在 C# 中杀死除我的程序之外的所有进程

    不 这不是恶意软件 我正在尝试制作一个 PC 辅助工具来杀死所有非 Windows 进程的任务 但在此过程中 它会杀死自己 这是一个控制台应用程序 所以我尝试删除 cmd exe 来终止 但它仍然终止了我的程序 有类似这样的方法吗 if p
  • Scrapy 在爬行几页后停止爬行

    我刚刚学习了 Scrapy 和网站爬虫的基础知识 所以我非常感谢您的意见 我在教程的指导下 从 Scrapy 构建了一个简单明了的爬虫 它工作正常 但不会按应有的方式抓取所有页面 我的蜘蛛代码是 from scrapy spider imp
  • 在 C# 中声明固定大小数组的列表

    我有一个对像素进行操作的函数 我想创建一个包含 RGB 值的列表 但是当我这样声明时 List
  • 可靠地将包含 PHP 数组信息的字符串转换为数组 [重复]

    这个问题在这里已经有答案了 可能的重复 模拟 php 数组语言构造或使用正则表达式解析 https stackoverflow com questions 3267951 simulate php array language constr
  • BDE dbidorestruct 返回空表

    在我的 Delphi Sydney Win 10 应用程序中 我使用 BDE 即使在今天也是如此 当我更改 更改 删除字段时 我想修改其现有的 悖论 表 我发现了一个免费软件组件 TFieldUpdate v1 1 由 Nathanial
  • 你会推动每一个提交吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我希望有人能给我更多有关使用 git 和远程存储库的详细信息 我还没有使用过远程存储库 您向本地存储库提交较小的更改 这些更改可能不会太令人震惊
  • CMD 行判断文件/路径是本地还是远程?

    从 NT shell 脚本中 我需要能够判断目标路径是否位于本地驱动器上 例如C or D 或在远程 映射驱动器上 或者 UNC path或映射的驱动器盘符 例如Z 有什么建议么 echo off goto main isremote se
  • 如何更改 Android 的日期选择器样式

    我目前正在制作一份注册表 其中一个字段是用户的出生日期 我想使用日期选择器 但我不想要如下所示的日历布局 我希望布局看起来像这样 这样就可以更轻松地选择年份和月份 而无需滚动浏览所有内容 但是我不知道如何解决这个问题 也不知道在 style
  • 哪个是保持逻辑角度的最佳位置?

    我正在开发一个角度应用程序 假设当我们实现某个按钮的 onclick 等功能时 调用 api 处理数据 在表中显示结果 表数据应该跨页面保留 因此我们需要保持变量处于服务状态 为了实现 首先我们可以开始从模板调用函数 然后在组件中我们可以做
  • 在 WPF 中不断绘制大量位图的最佳方法?

    我被这个非常简单的问题难住了 我正在制作一个基于图块的游戏引擎 需要能够允许用户使用 WPF 用户界面编辑地图 天真地 我以为我可以简单地使用 Graphics FromImage 不断更新一个好的老式 缓冲 System Drawing
  • 如何在 pypi 上为新项目创建 API 令牌?

    我正在尝试使用 API 令牌将包上传到 PyPI 我想使用项目特定的 API 令牌而不是帐户特定的令牌 因为这看起来更安全 但是 由于尚未在 PyPI 上创建该项目 因此当我尝试在 PyPI 网站上创建新的 API 令牌时 没有可供选择的项
  • 如何使用 KeyEvent 定位正在运行的应用程序?

    我的目标是通过键事件来定位在后台服务的前台或后台运行的特定应用程序 我尝试了很多解决方案 但还没有成功 尝试的几个解决方案 全部来自后台运行的服务 通过广播 我尝试定位第一个管理关键事件的应用程序 例如电话应用程序 KeyEvent lKe