如何检查ACTION_SEND意图是否已启动?

2023-12-26

我的应用程序使用标准的简单文本共享。在我的测试中,我想检查我的活动是否启动了共享意图。是否可以?

我在用ActivityInstrumentationTestCase2 test.

活动:

final Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, message);
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent, "Share"));

Test:

final IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_SEND);
intentFilter.addDataType("text/plain");
final ActivityMonitor receiverActivityMonitor = getInstrumentation().addMonitor(
            intentFilter, null, false);

TouchUtils.clickView(this, getActivity().findViewById(R.id.share_button));
final Activity shareActivity = receiverActivityMonitor.waitForActivityWithTimeout(500);
assertNotNull(shareActivity); // Fails

上述测试不起作用。有没有办法测试 ACTION_SEND 意图是否已启动?

临时解决方案

现在,在活动中我将意图保存到成员变量中:

mSendIntent = new Intent();

所以我可以通过测试来验证它:

assertEquals("android.intent.action.SEND", getActivity().mSharingIntent.getAction());
assertEquals("text/plain", getActivity().mSharingIntent.getType());
String sharedText = getActivity().mSharingIntent.getStringExtra(Intent.EXTRA_TEXT);
assertEquals("test I shared", sharedText);

你正在通过的结果Intent.createChooser to startActivity,所以你需要监控Intent.ACTION_CHOOSER action.

final IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_CHOOSER);
final ActivityMonitor receiverActivityMonitor = getInstrumentation().addMonitor(intentFilter, null, false);

TouchUtils.clickView(this, getActivity().findViewById(R.id.share_button));
final Activity shareActivity = receiverActivityMonitor.waitForActivityWithTimeout(500);
assertNotNull(shareActivity);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查ACTION_SEND意图是否已启动? 的相关文章

随机推荐

  • 需要检查和填充 sqlite 数据库管理和操作代码

    All 更新 根据谷歌结果和答案 我添加了更多提示 但仍未完成 在使用sqlite3和研究sqlalchemy的过程中 我发现有必要编写下面的代码来管理数据 但是 对我来说在sqlalchemy中做到这一点可能是一个困难的部分 然后我又回到
  • Gmail API OAuth2 错误:redirect_uri_mismatch

    我遵循了 Gmail API Python 快速入门教程 https developers google com gmail api quickstart python https developers google com gmail a
  • 在 Swift 3 中使用音频队列获取麦克风输入

    我正在开发一个应用程序 通过内置麦克风录制语音并将其实时发送到服务器 所以我需要在录音时从麦克风获取字节流 经过谷歌搜索和堆栈溢出相当长一段时间后 我想我弄清楚了它应该如何工作 但事实并非如此 我认为使用音频队列可能是可行的方法 这是我到目
  • 获取int的长度

    我正在尝试获取一个的长度 以十进制解释时的位数 int生锈了 我找到了一种方法来做到这一点 但是我正在寻找来自原语本身的方法 这就是我所拥有的 let num 90 to string println num num chars count
  • 获取选择 jquery ui 选项卡上的选项卡文本

    我正在使用 jquery ui 选项卡 我可以在 load ajax 事件中获取所选选项卡的索引 tabs tabs load function e ui if tabs tabs option selected 0 现在我想获取选项卡名称
  • JPA 坚持多对多

    我有一个非常标准的场景 其中我有一个以 user id 作为 PK 的用户表和一个以 role id 作为 PK 的角色表 这两个表通过多对多关系相关 即用户可以拥有多个角色 一个角色可以应用于多个用户 随后我有一个名为 users has
  • 如何将 grails 3 插件发布到我的本地 Nexus 存储库?

    Running grails publish plugin似乎没有做任何事情 我能找到的唯一文档是关于发布到 bintray 的 edit 我可以通过发布插件gradle publish 但想知道是否有一种 gr ails y 的方法可以做
  • (StaleElementException:Selenium) 我该如何处理这个问题?

    这是我第一次第一天研究 Selenium 而且我也没有深入的 Web 技术实践经验 解决办法是 当我尝试访问 DOM 上的特定对象时 我一直面临 StaleElementException 以下方法处理所有任务 private void e
  • 为什么我们为每个变量分配 12 个字节?

    在 Visual Studio 2010 Professional x86 Windows 7 中 more 00DC1362 B9 39 00 00 00 mov ecx 39h 00DC1367 B8 CC CC CC CC mov e
  • 是否可以在 Jupyter Notebook 中使用 SCOOP?

    有没有一种方法可以从 Jupyter 笔记本中运行 SCOOP 模块 我需要使用 SCOOP 构建数据集 然后使用 matplotlib seaborn 构建绘图 None
  • 如何根据缩放级别获取等于 Geozone 圆半径的像素数?或者区域圆到屏幕像素的半径?

    我正在谷歌地图上创建地理区域 默认Circle https developers google com android reference com google android gms maps model Circle滚动地图时地图 AP
  • 将 WinForm 保存为 PDF 并打印多页 WinForm [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何将多页 WinForm 保存为 PDF 以及如何打印 谢谢 奥菲尔 一个好的框架是pdfSharp http www pdfsharp
  • Angular 2 教程,路由部分未处理的承诺拒绝

    我正在尝试遵循官方教程 一切都很顺利 直到路由部分here https angular io docs ts latest tutorial toh pt5 html 当我到达重新制作 app component ts 并更改 app mo
  • TFS Rest API 不适用于日志

    知道为什么这个方法不起作用 GET https instance DefaultCollection project apis build builds buildId logs api version 2 0 我能够获取构建定义等 但是当
  • 如何在 Visual Studio 中仅调试一个线程[重复]

    这个问题在这里已经有答案了 我希望在调试时能够仅跟踪一个线程的执行 我使用线程池 因此调试器不断在线程之间切换 这使得调试非常不舒服 Reading Visual Studio 调试多个线程之一 https stackoverflow co
  • 如何在 Coffeescript 中实现和谐?

    这是我运行 js 代码的方式 node harmony data app js 现在我想转向 CoffeeScript 所以我尝试这样运行它 coffee data app coffee 但它失败了 我怎样才能通过这个 harmony op
  • 小书签如何避免弹出窗口拦截器

    我编写了一个书签 用于在弹出窗口中使用谷歌翻译器快速翻译选定的文本 javascript function var text encodeURI document getSelection if text length text promp
  • MySQL 遗留数据库的终极噩梦

    表格1 一切包括厨房水槽 日期格式错误 去年 因此无法对该列进行排序 存储为 VARCHAR 的数字 街道 列中的完整地址 名字列中的名字和姓氏 姓氏列中的城市 不完整的地址 通过根据多年来更改的一组规则将数据从一个字段移动到另一个字段来更
  • 在 Nest.js 中访问 Stripe webhook 的原始主体

    我需要在 Nest js 应用程序中访问来自 Stripe 的 webhook 请求的原始正文 下列的this https github com stripe stripe node blob master examples webhook
  • 如何检查ACTION_SEND意图是否已启动?

    我的应用程序使用标准的简单文本共享 在我的测试中 我想检查我的活动是否启动了共享意图 是否可以 我在用ActivityInstrumentationTestCase2 test 活动 final Intent sendIntent new