如何使用 Espresso 存根 Intent.createChooser Intent

2024-02-02

Problem

我的应用程序中有一张图像,并将其共享给任何其他可以处理图像共享的应用程序,并且该功能运行良好。

我正在编写一个 Espresso UI 测试来拦截意图并确保它具有正确的操作和附加功能,但似乎无法让它工作。

Code

这是创建意图时的代码:

Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.setType(MediaType.PNG.toString());
startActivity(Intent.createChooser(intent, "send");

这是我在测试中尝试匹配意图的尝试,但未能找到匹配项:

Intents.init();
launchActivity(MyFragment.newIntent(getTargetContext());

Matcher<Intent> expectedIntent = allOf(
    hasAction(Intent.ACTION_CHOOSER),
    hasExtra(
        Intent.ACTION_SEND,
        hasExtra(Intent.EXTRA_STREAM, EXPECTED_SHARE_URI) // Expected URI has been copied from the extras 'uriString' value when debugging
    )
);
intending(expectedIntent).respondWith(new Instrumentation.ActivityResult(0, null));
MyScreen.clickShareButton(); // performs click on the share button
intended(expectedIntent);
Intents.release();

Error

IntentMatcher: (has action: is "android.intent.action.CHOOSER" and has extras: has bundle with: key: is "android.intent.extra.STREAM" value: is "[my uri appears here]")

附加信息

调试时,创建的 Intent 会产生带有操作“android.intent.action.CHOOSER”的 Intent,并且具有额外的类型 Intent、操作“android.intent.action.SEND”和类型“image/png” ,并且反过来还有一个额外的,一个带有 uriString 的 HierarchicalUri。

Summary

有人知道我做错了什么吗?我找不到一种方法将所有这些联系在一起并为此意图创建一个匹配器。任何帮助将不胜感激!


如果您在这一行遇到错误intended(expectedIntent)因为意图不符,可能是因为Intent.createChooser将您的意图作为带有密钥的额外数据Intent.EXTRA_INTENT。在您的情况下,您只需要为选择器提供一个额外的意图匹配器:

Matcher<Intent> intent = allOf(
    hasAction(Intent.ACTION_SEND),
    hasExtra(Intent.EXTRA_STREAM, EXPECTED_SHARE_URI)
);

Matcher<Intent> expectedIntent = allOf(
    hasAction(Intent.ACTION_CHOOSER),
    // Intent.createChooser put your intent with the key EXTRA_INTENT
    hasExtra(Intent.EXTRA_INTENT, intent)
);

intending(anyIntent()).respondWith(new Instrumentation.ActivityResult(0, null));

MyScreen.clickShareButton();

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

如何使用 Espresso 存根 Intent.createChooser Intent 的相关文章

  • Android - 如何访问 onResume 中 onCreate 中实例化的 View 对象?

    In my onCreate 方法 我正在实例化一个ImageButton View public void onCreate Bundle savedInstanceState super onCreate savedInstanceSt
  • 如何改变android中menuItem的背景颜色?

    我正在以编程方式将菜单项添加到菜单中 我想在选择特定项目时添加背景颜色 如何为 menuItem 添加背景 您的回答将不胜感激 虽然其他答案提供了更改样式 这会影响all菜单项 据我了解 需要更改一个菜单项 我建议你使用android ac
  • android 谷歌+登录定制

    我正在创建一个 Android 应用程序 现在我正在实现社交网络登录 Facebook 按钮很好 但 google 按钮的语言与 Facebook 不同 另外 它只说 登录 我想让它说 用谷歌登录 我是 android 编程的新手 看到我需
  • 无法解析符号 FlutterActivity

    我使用 VCS gt Checkout from Version Control 将 flutter 项目从 github 导入到 Android Studio 中 现在我面临的问题是 Cannot resolve symbol Flutt
  • 无法合并 Dex - Android Studio 3.0

    当我在稳定频道中将 Android Studio 更新到 3 0 并运行该项目时 我开始收到以下错误 Error Execution failed for task app transformDexArchiveWithExternalLi
  • Google Inbox 类似 RecyclerView 项目打开动画

    目前 我正在尝试实现 Google Inbox 例如RecyclerView行为 我对电子邮件打开动画很好奇 我的问题是 该怎么做 我的意思是 他们使用了哪种方法 他们用过吗ItemAnimator dispatchChangeStarti
  • Android SDK 中可用的所有“android.intent.action”操作的详尽列表是什么?

    大家好 我想知道标准 Android SDK 中定义的所有 Intent 操作是否有详尽的参考 我正在考虑完整的 android intent action someaction 名称 而不是 Intent 类中定义的方便别名操作的限制列表
  • 下载图像并显示它

    应用程序的主要目的是下载和显示图像 但是当我尝试启动应用程序时它崩溃了 这是我的代码 private DownloadImageTask task protected void onCreate Bundle savedInstanceSt
  • Android 手机应用意图

    我想在手机上启动手机应用程序作为意图 我正在使用这个代码 startActivity getPackageManager getLaunchIntentForPackage com android phone 但该函数抛出一个空指针异常 因
  • 如何覆盖日期选择器的高度和宽度以填充父布局

    我有一个活动包含一个日期选择器 我想设置DatePicker适合屏幕 我试过这个答案 https stackoverflow com questions 6674667 how to customize date pickers width
  • 如何从SurfaceView绘制到Canvas?

    我正在尝试做简单的画家 问题是Android看起来有三个独立的Canvas并给我它来顺序绘制 我用以下方式制作了用户界面SurfaceView 把霍尔德从中拿走 Override protected void onCreate Bundle
  • onTouchEvent()中如何区分移动和点击?

    在我的应用程序中 我需要处理移动和单击事件 一次点击是由一个 ACTION DOWN 操作 多个 ACTION MOVE 操作和一个 ACTION UP 操作组成的序列 理论上 如果您收到 ACTION DOWN 事件 然后收到 ACTIO
  • 如何在android中录制音频时暂停背景音乐

    我正在 Android 中开发一个音频记录应用程序 因此 如果设备音乐播放器中已播放任何背景音乐 则应在开始录制之前暂停该背景音乐 并且每当录制停止或暂停时 背景音乐都应恢复 播放录制的音频时也应该如此 有人可以帮我解决这个问题吗 提前致谢
  • 如何在 WebView 中添加 JavaScript 函数并稍后在提交 reCAPTCHA 时从 HTML 调用它

    我在 WebView 中添加一个 JavaScript 函数 如下所示 Kotlin val webView findViewById R id webview as WebView webView getSettings setJavaS
  • 如何在新标签 android webview 中打开链接? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经使用 webview 创建了一个 android 应用程序来显示我的网站 我什至想添加在新选项卡中打开链接的功能 但我找不到任何
  • 按名称查找视图

    是否可以通过名称而不是 id 来查找视图 findViewById R id someView 但我想做这样的事情 findViewByName someView 在处理 xml 时 您必须通过标识符查找视图 但是您可以使用以下方式查找标识
  • 如何使 tablayout 文本大小相等?

    这就是我所做的 我为文本创建了一种样式
  • ormlite 将日期读取为 'yyyy-MM-dd'

    我需要读取给我的 sqlite 数据库 因此我无法更改表中的日期格式 yyyy MM dd 当我尝试使用 ormlite 为我生成对象时 使用以下注释 DatabaseField columnName REVISION DATE dataT
  • OpenGL ES 2.0 屏幕闪烁

    我面临着一个大问题 我正在使用带有 Android 4 0 3 的 Transformer tf101 选项卡 我的应用程序使用自定义 OpenGL ES 2 0 表面 我正在用纹理渲染多个平面 该纹理大约发生变化 每秒 20 次 并通过传
  • Amazon IAP 不会调用 onPurchaseResponse

    我有一个 Android 应用程序 它使用 IAP 我正在发送PurchasingManager initiateGetUserIdRequest 并得到用户识别成功 in onGetUserIdResponse 得到回复后Purchasi

随机推荐

  • 为什么我无法将间隔解析为 JPA 中的参数?

    我正在尝试选择时间戳间隔 Query value SELECT timestamp as time start timestamp interval 1 as time end FROM timestamp table nativeQuer
  • 如何在 Vue.js 2 中搜索多个字段

    我正在尝试搜索或过滤 3 个字段名字 姓氏 and email在我的 Vue js 2 应用程序中 据我了解 与 Vue 1 不同 Vue 2 没有内置的过滤器方法 因此我创建了一种自定义方法 该方法只能过滤一个字段 如何将其扩展到多个领域
  • CSS 转换后无法点击按钮

    我正在尝试制作一个带有立方体的 html 页面 所述立方体的每个面都有按钮 在默认面上 所有按钮都可以正常工作 但是 一旦我旋转立方体 新面就会失去所有交互性 HTML
  • 如何找到列表的众数?

    scala 集合中是否有一个函数可以查找列表中某个值的最大出现次数 假设我有一个清单 L List A B B E B E B B C E B output B 我可以编写一个模块来计算这个 但我希望已经有一个 scala 方式 或 sca
  • pytest中首先执行哪个文件?

    正在浏览一些有关的教程pytest 我了解到 python m pytest 该命令执行所有以前缀开头的文件test 以及哪些文件位于同一目录中的函数 但我的问题是 如果文件是 首先执行哪个文件test app id py test sum
  • 为什么 https 下载会暂停并显示 PAUSED_WAITING_TO_RETRY?

    我正在使用下载管理器 https developer android com reference android app DownloadManager html STATUS PAUSEDAndroid 中通过 https URL 下载文
  • 如何使 Tkinter 按钮命令起作用

    我有一个带有按钮的类 它在构建 gui 时自动运行命令 我不希望它这样做 但之后就不再工作了 我究竟做错了什么 内置命令 例如 endcommand 可以正常工作 相关摘录 忽略一开始的缩进问题 class GuiPart object d
  • 使用 iCloud 在多个设备之间同步核心数据

    已经有最近有很多讨论 http rms2 tumblr com post 46505165521 the gathering storm our travails with icloud sync关于 iCloud 和 Core Data
  • 寻找简单的 MVVM Light 示例

    我正在尝试学习 MVVM Light 并正在寻找一个很好的基本示例来显示模型以及如何加载不同的视图 我下载 MVVM Light 后看到的模板没有模型 只有一个视图 http www galasoft ch mvvm creating 当我
  • 表级备份

    如何在 MS SQL Server 2005 2008 中进行表级备份 转储 您不能使用BACKUP DATABASE备份单个表的命令 当然除非有问题的表被分配给它自己的表FILEGROUP 正如您所建议的 您可以做的是将表数据导出到 CS
  • 为什么此标头位置重定向在内容已回显后才起作用?

  • .NET 事件处理程序 - 通用还是不通用?

    每次我深入研究 C 项目时 最终都会遇到很多只需要传递单个项目的事件 我坚持EventHandler EventArgs练习 但我喜欢做的是 public delegate void EventHandler
  • 在Java中加载类路径中的XML文件

    我需要将类路径中存在的 xml 文件加载到我的 java 应用程序中 任何人都可以对此提出建议吗 Thanks 纳伦德拉 Use ClassLoader getResourceAsStream http download oracle co
  • 如何从 Linq2Sql 查询填充 POCO(子)IList 属性?

    我有两门课 public class Question public IList
  • z3 中使用哪些技术来处理非线性整数实数问题?

    以下是 a 的 z3 统计数据problem http www ccs neu edu home jaideep example smt2在非线性整数实数片段中 我的许多问题与此类似 add rows 11062574 added eqs
  • 您有任何提高 ReSharper 和/或 Visual Studio 性能的技巧吗?

    我正在使用 Visual Studio 2008锐锐 http en wikipedia org wiki ReSharper4 而且速度有点慢 我的机器有 2 GB RAM 双核处理器和 7200 rpm 硬盘 我知道更多的 RAM 和更
  • Apache 如何访问 root 用户创建的 SSL 证书?

    我有一台运行 Apache HTTPD 的 Debian 服务器 我已将其配置为使用驻留在 etc ssl private 中的某些 SSL 证书 只有 root 用户具有该目录的读写权限 HTTPD 进程以 www data 用户身份运行
  • Oracle XE 11g 找不到XE数据库

    我是一名刚开始使用Oracle数据库的新手 在安装最新版本的过程中遇到了问题Oracle XE 11gx64 到 Microsoft Windows 7 x64 Enterprise During installation were not
  • JDK 1.6 中的 @override 注解

    我使用的是JDK1 6 当我实现一个接口并在实现类中时 如果我给出 override在我的函数名称之前 Eclipse 抛出编译错误 即根据 Eclipse 下面的代码是错误的 public class SomeListener imple
  • 如何使用 Espresso 存根 Intent.createChooser Intent

    Problem 我的应用程序中有一张图像 并将其共享给任何其他可以处理图像共享的应用程序 并且该功能运行良好 我正在编写一个 Espresso UI 测试来拦截意图并确保它具有正确的操作和附加功能 但似乎无法让它工作 Code 这是创建意图