为什么 PackageManager 没有从 Instrumentation Registry (UI-automator) 中找到 Activity?

2024-03-28

为什么 Instrumentation Registry (UI-automator) 中的 PackageManager 找不到 Activity?

意图 { pkg=com.me.Activity1 }

我的应用程序有 3 个入口点。三个活动,每个活动都由一个图标表示。

我正在尝试运行 ui-automator 测试来按下图标并启动相应的活动。

在 Android Studio 2.2 中,当我选择应用程序并按“运行”时,它会正确运行并启动活动。但是,在 ui-automator 中,它在 Nexus 5 设备和模拟器中均失败。

但是,按照文档中提供的示例,“访问 UI 组件 https://developer.android.com/training/testing/ui-testing/uiautomator-testing.html#run”,意图是无效的。 我找到了这个answer https://stackoverflow.com/q/30446052/398348并尝试修改。由于意图是显式创建的,因此它不再为 null,但它不会启动 Activity - logcat 显示它没有启动。

调试显示resolveInfos.size为零。我猜测上下文或仪器注册表有问题。

    Collections.sort(resolveInfos, new ResolveInfo.DisplayNameComparator(pm));

我也尝试过... getTargetContext() 而不是 getContext(),但失败了。

    Context context = InstrumentationRegistry.getTargetContext();

任何帮助表示赞赏。

@Test
public void userLaunchesActivity1() {
    launchApp("com.me.Activity1");
}

   void launchApp(String BASIC_SAMPLE_PACKAGE) {
        Log.d("userLaunchesActivity1", "BASIC_SAMPLE_PACKAGE:"+BASIC_SAMPLE_PACKAGE);
        // Initialize UiDevice instance
        mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());

    // Start from the home screen
    mDevice.pressHome();

    // Wait for launcher
    final String launcherPackage = mDevice.getLauncherPackageName();
    assertThat(launcherPackage, notNullValue());
    mDevice.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)),
            LAUNCH_TIMEOUT);

    // Launch the app
    Context context = InstrumentationRegistry.getContext();
    // ======== example from android.com documentation - intent is null ====
    // Description
   // final Intent intent = context.getPackageManager()
     //       .getLaunchIntentForPackage(BASIC_SAMPLE_PACKAGE);
    // Clear out any previous instances
    //intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
    //context.startActivity(intent);
    //

    //=======stack overflow answer - does not launch activity====================
    Intent intent = new Intent();
    intent.setPackage(BASIC_SAMPLE_PACKAGE);

    PackageManager pm = context.getPackageManager();
    List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent, 0);
    Collections.sort(resolveInfos, new ResolveInfo.DisplayNameComparator(pm));

    //======= this is not entered at all ===================
    if(resolveInfos.size() > 0) {
        ResolveInfo launchable = resolveInfos.get(0);
        ActivityInfo activity = launchable.activityInfo;
        ComponentName name = new ComponentName(activity.applicationInfo.packageName,
                activity.name);
        Intent i = new Intent(Intent.ACTION_MAIN);

        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
        i.setComponent(name);

        context.startActivity(i);
    }
    //===========================

    // Wait for the app to appear
    mDevice.wait(Until.hasObject(By.pkg(BASIC_SAMPLE_PACKAGE).depth(0)),
            LAUNCH_TIMEOUT);
}

None

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

为什么 PackageManager 没有从 Instrumentation Registry (UI-automator) 中找到 Activity? 的相关文章

  • Android TCP Server 仅在客户端关闭后显示来自 Python 客户端的消息

    我正在使用一些示例代码 它允许我从 Python 客户端向 Android 服务器 TCP 发送消息 但该消息仅在客户端关闭后才会显示在 Android 模拟器上 我可能缺少 tcp 套接字背后的一些基本理解 第一次使用和实现 我的主要目的
  • Android P Beta - AlarmManager 通知不起作用

    我正在 Android P beta 版本 4 上测试我的应用程序 我的应用程序目标SdkVersion是27 据观察 警报管理器通知未按预期工作 我使用下面的代码来设置通知 if android os Build VERSION SDK
  • Android NumberPicker 带字符串

    I have customised the NumberPicker to show text The output is this 当我按 确定 时 我想将 e x 鼠标添加到我的列表 文章 中 我得到的是索引值 int 它由 array
  • 指标元素之间的空间

    如何增加 减少指标元素之间的空间ViewPagerIndicator 我用过CirclePageIndicator 我能够通过以下步骤在两个指标之间留出更多空间 打开源代码CirclePageIndicator并找到变量mRadius 在第
  • Android 构建签名 APK 时出错:找不到用于签名配置“externalOverride”的 keystore.jks

    当我尝试构建签名 APK 时出现此错误 我最近升级到 API 23 但之后成功生成了 APK s 我很困惑 寻求帮助并建议如何解决这个问题 这是错误 FAILURE Build failed with an exception What w
  • Android:从 https url 获取响应

    问候 我正在开发一个 Android 应用程序 需要通过 https 打开一个 url 带有 POST 参数 并获取响应 我有一个自签名证书 这让情况更加复杂 我还需要接受cookies 有人知道从哪里开始吗 提前谢谢了 Android 附
  • 如何处理应用程序对 3d party 的依赖

    我当前正在开发的应用程序依赖于第三方应用程序 OIFileManager 我的问题是处理这些依赖关系的一般方法是什么 告诉用户解决它 嵌入 3d party apk 如果其许可证允许 自动解决 也许Android市场有相应的系统 没有自动的
  • 如何在phonegap上使用GCM处理android中的多个推送通知

    当推送通知到达时 如果用户无法查看该通知 他收到另一条通知 之前的通知正在更新为新的 但它不应该更新为最新的 我们需要单独显示每个通知 这可以使用 GCM 吗 我已经使用Phonegap来开发应用程序 PushPlugin 支持在有效负载中
  • 无法从后台服务通过 WiFi 访问互联网

    我将直接介绍我发现的一些事实 数据 如果您遇到 解决了类似的问题 请帮助我 我每 5 分钟向服务器发送一次数据 除非用户在服务器的帮助下手动将其关闭 wakeful broadcast receiver通过一个intent service
  • CollapsingToolbarLayout 禁用绘制扩展

    我有一个已有条件禁用的 CollapsingToolbar 当用户在这种情况下加载视图时 它看起来就像一个普通的 ToolBar 对象 唯一奇怪的是 如果它们向下拖动 例如在拉动刷新样式操作中 折叠工具栏就会展开 尽管我的愿望和代码与此相反
  • 如何消除警告:使用“$”而不是“.”对于 Eclipse 中的内部类

    我是 Android 开发新手 当我将 eclipse 和 Android SDK 更新到最新版本后 我收到警告 Use instead of for inner classes or use only lowercase letters
  • 使用 Asp.Net 的 GCM 推送通知

    正如您可能已经看到的 Google 正在迁移其推送通知系统 http developer android com guide google gcm c2dm html http developer android com guide goo
  • 将样式应用于警报对话框

    我决定尝试材质警报dialogs https material io develop android components dialog 在安卓上 我遇到的问题是当我尝试应用某些样式时 检查文档 我发现了这个
  • Android - 测试另一个活动是否已开始

    我正在尝试测试以下场景 在自动完成文本视图中输入一个字母 向下滚动并选择其中一个选项 然后单击一个按钮 单击按钮将启动一个新活动 我想检查新活动是否已经开始 这是测试方法 public void testSpinnerUI mActivit
  • Android - 如何合并两个视频

    基本上 我正在寻找一种将两个 mp4 视频文件 在 SD 卡上 组合在一起的方法 更像是在第一个视频的末尾附加第二个视频 我进行了很多搜索 但找不到合适的解决方案 好吧 我根本找不到任何解决方案 所以我的问题是 是否有一个库可以组合 并可能
  • 如何在高速缓存中存储图像

    我对此完全空白 我想从 URL 下载图像 并且必须将其存储在内部 以便下次我不需要连接到网络 而是从缓存中检索它 但我不知道该怎么做 谁能帮我提供一个代码片段 import java io BufferedInputStream impor
  • 防止 Firebase 中的待处理写入事务不起作用

    我的目标是在单击按钮时将名称插入 Cloud Firestore 中 但如果用户未连接到互联网 我不希望保存处于挂起状态 我不喜欢 Firebase 保存待处理写入的行为 即使互联网连接已恢复 我研究发现Firebase 开发人员建议使用事
  • 如何更改焦点/按下时图像按钮的色调

    我有一个ImageButton在我的应用程序中 当按钮打开时我需要更改图像的色调pressed focused 我有ImageButton设置为获取其src来自 XML 文件 如下所示
  • Phonegap - cordova 在 Android 和 iOS 设备上延迟且缓慢

    我刚刚开始使用 zend studio 开始我的第一个 PhoneGap 项目 但是 在我构建并部署它之后 该应用程序非常慢 Android 和 iOS 均可 滚动滞后 如果我按下按钮 转到下一页的速度很慢 有什么办法可以提高它的性能吗 提
  • 如何在android中获取当前一周的所有天数?

    我想在字符串数组中获取本周的所有日期 我怎样才能做到这一点 提前致谢 I think你想要这样的东西 假设你总是想要从星期一开始的几周 以及 MM dd yyyy 的日期格式 DateFormat format new SimpleDate

随机推荐