【问题标题】:How to check phone number on dialer through Espresso - Dialer fired through autoLink如何通过 Espresso 检查拨号器上的电话号码 - 通过 autoLink 触发的拨号器
【发布时间】:2018-11-23 22:24:48
【问题描述】:

我正在尝试检查电话拨号器是否通过 Espresso 以正确的电话号码打开,但到目前为止还不能做到这一点。 我试过了:

    Intents.init();

    Intent stubIntent = new Intent();
    Instrumentation.ActivityResult stubResult = new Instrumentation.ActivityResult(Activity.RESULT_OK, stubIntent);
    intending(hasAction(Intent.ACTION_DIAL)).respondWith(stubResult);
    intended(Matchers.allOf(hasAction(Intent.ACTION_DIAL), hasData(Uri.parse("+3531234567"))));

还有

    Intents.init();

    intended(allOf(hasAction(Intent.ACTION_DIAL), hasData(Uri.parse("+3531234567"))));

拨号器是通过我的 XML 上的 TextView 上的自动链接触发的,如果这有任何帮助吗?

android:autoLink="all"

那是 Espresso 打开的拨号器

非常感谢。

【问题讨论】:

    标签: android android-intent android-espresso


    【解决方案1】:

    它似乎真的不适用于自动链接,并且基于@Aaron 的大力帮助,这对我有用。

    1 - 从 TextView 中移除 autoLink

    2 - 触发意图通常通过 OnClickListener as

    tvCallNumber.setText(phone); // phone = +3531234567
    
        tvCallNumber.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_DIAL);
                intent.setData(Uri.parse("tel:" + phone)); 
                startActivity(intent);
            }
        });
    

    3 - 确保电话号码以“tel:”为前缀

    4 - 为测试操作设置正确的顺序

        Intents.init();
    
        Intent stubIntent = new Intent();
        Instrumentation.ActivityResult stubResult = new Instrumentation.ActivityResult(Activity.RESULT_OK, stubIntent);
    
        intending(hasAction(Intent.ACTION_DIAL)).respondWith(stubResult);
        onView(withId(R.id.tv_call_number)).perform(click());
        intended(Matchers.allOf(hasAction(Intent.ACTION_DIAL), hasData(Uri.parse("tel:+3531234567"))));
    

    【讨论】:

      【解决方案2】:

      我相信你需要在你的号码前加上tel:,所以试试吧:

      Uri.parse("tel:+3531234567")
      

      【讨论】:

      • 嗨@Aaron,非常感谢您的回复。这是有道理的,我现在添加了它并尝试使用这两种方法,但恐怕仍然没有成功的结果。如果有帮助,电话号码来自网络呼叫?再次感谢。
      • 再次尝试将“+3531234567”硬编码到我的文本视图,但仍然没有成功通过。
      • 你有错误日志吗?只是想看看它在期待什么。
      • 这里有东西。我认为它几乎可以工作了。很快就会回复您。 :)
      • 它现在工作了!刚刚更新了它的步骤。它似乎确实不适用于 autoLink,但它可以触发正常的意图操作。我认为你现在应该被正式提升为我的 Espresso 伙伴,这是你第三次帮助我解决问题。非常感谢! :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 2017-06-09
      • 2023-03-21
      相关资源
      最近更新 更多