如何检查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意图是否已启动? 的相关文章

  • Android-如何将 android.net.Uri 对象转换为 java.net.URI 对象?

    我正在尝试获得一个FileInputStream用户从图片库中选择的图像上的对象 这是安卓URI由返回android provider MediaStore Images Media INTERNAL CONTENT URI content
  • 如何在 Android 中更改 Drawable 的颜色?

    我正在开发一个 Android 应用程序 并且我有一个从源图像加载的可绘制对象 在此图像上 我想将所有白色像素转换为不同的颜色 例如蓝色 然后缓存生成的 Drawable 对象 以便稍后使用它 举例来说 假设我有一个 20x20 PNG 文
  • 如何使用 gradle 从 3 个子模块构建 1 个 jar

    I have 安卓工作室3 gradle 4 1 梯度工具3 classpath com android tools build gradle 3 0 1 当我有一个模块并使用 gradle 工具 2 时 我使用了 task makeJar
  • Android 应用程序安装失败:包 com.my.app 在条目 AndroidManifest.xml 处没有证书

    在 Android Studio 中 我生成了带有密钥库等的签名 APK 将 APK 安装到设备上时失败 并显示 无法安装应用程序 并且在 Android Monitor 中我看到以下行 Package com my app has no
  • 当满足条件时,如何以编程方式更改 ImageButton src 目标?

    我有一个学校项目 我正在尝试开发一个手电筒应用程序 对于开 关 ImageButton 我想要 4 个自定义图像 如果手电筒关闭 turn on png 默认 turn on pressing png 按下状态 true 如果手电筒打开 t
  • 为什么反射会减慢Android手机的速度

    我多次读到反射会降低手机性能 这有多真实 例如 在我的例子中 我从 Web 服务获取一些参数 这些参数与我在 Android 应用程序中的类的参数同名 所以我只是使用java字段和反射设置这些参数的值 它似乎并没有降低性能 有人可以向我解释
  • Ionic 2 RC0 和 Angular 2 最新的 Android 构建错误(ngc:错误:静态解析符号值时遇到错误)

    当我使用构建android时出现错误ionic build android命令 ngc 错误 静态解析符号值时遇到错误 引用本地 非导出 符号 字典 考虑导出符号 原始 ts文件中的位置14 8 解析符号TRANSLATION PROVID
  • 从ListView中隐藏行而不占用空间

    我有一个带有关联 ArrayAdapter 的 ListView 它在多个活动中显示其内容 不幸的是 现在有必要 我的 ListView 在其中一项设置中不显示其所有元素 而仅显示 属性 未设置为 true 的元素 我想避免使用两个具有不同
  • Android上如何获取ImageView的Drawable的矩形?

    我想要获取将包裹 ImageView 的 Drawable 的矩形对象 而不是包裹 ImageView 的矩形 我将使用该矩形在 Drawable 周围绘制一些奇特的矩形 我怎样才能得到那个矩形 Rect rect new Rect Ima
  • 透明 9patch 图像:显示出线条

    我得到了一个透明的 9 补丁图像 其中有 9 条补丁线显示槽 This is the output 显然我不希望水平线可见 这就是我创建 9patch 的方式 This is the final image that is used in
  • Android -room 持久库 - DAO 调用是异步的,因此如何获取回调?

    从我读到的Room 不允许您在主线程上发出数据库查询 因为可能会导致主线程延迟 所以想象一下我正在尝试更新 UI 主线程上的文本视图 其中一些数据我将如何得到回调 让我给你举个例子 想象一下 我想将我的业务模型数据存储到一个名为 事件 的对
  • 在新的 intel x86 android 模拟器中访问 google api

    我只是尝试在新的 x86 android 模拟器中运行我公司的应用程序 但是我们的应用程序依赖于 google 地图 API 而这在 google 随 android sdk 版本 17 提供的 x86 系统映像中不可用 我的直觉告诉我答案
  • 是否可以通过 Android 应用程序来录音?

    我是一名开发人员 希望创建一个 Android 应用程序来记录电话 这是出于我个人的需要 为了我自己的目的和记录而记录电话 是否有可能做到这一点 是否可以访问麦克风以及通过扬声器发出的声音 我对 Android 开发有点陌生 所以请耐心等待
  • Android NDK 代码中的 SIGILL

    我在市场上有一个 NDK 应用程序 并获得了有关以下内容的本机崩溃报告 SIGILL信号 我使用 Google Breakpad 生成本机崩溃报告 以下是详细信息 我的应用程序是为armeabi v7a with霓虹灯支持 它在 NVIDI
  • 无法使用 findViewById() 找到视图

    我找不到TextView通过致电findViewById 即使 ID 确实存在 OtherActivity public class OtherActivity extends Activity Override protected voi
  • jetpack compose 是否使用drawable-night 文件夹?

    我们有一个基于视图的 Android 应用程序 其中有一些可绘制对象res drawable文件夹 以及夜间模式的对应文件夹res drawable night folder 使用旧视图时 引用可绘制对象R drawable foo从 XM
  • 离子初始加载时间

    我正在使用 Ionic 构建一个简单的应用程序 但我的应用程序在冷启动时的初始加载时间方面存在性能问题 这是我所做的 collection repeat 代替带有 track by 的 ng repeat 原生滚动 overflow scr
  • fs-extra:源和目标不能相同。 (科尔多瓦)

    我在使用 cordova 构建时遇到错误 Error Source and destination must not be the same 构建系统 Ionic ionic cli 4 10 1 ionic framework ionic
  • 将对象从手机共享到 Android Wear

    我创建了一个应用程序 在此应用程序中 您拥有包含 2 个字符串 姓名和年龄 和一个位图 头像 的对象 所有内容都保存到 sqlite 数据库中 现在我希望可以在我的智能手表上访问这些对象 所以我想实现的是你可以去启动 启动应用程序并向左和向
  • LifeCycleAware Fragment 中的片段生命周期事件

    我有一个生命周期感知片段和一个LifecycleObserver class public class MyFragment extends Fragment Override public void onCreate Nullable B

随机推荐

  • 需要检查和填充 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