老李分享 接電話擴充套件之uiautomator 1

2022-07-29 18:51:08 字數 1609 閱讀 3213

在做自動化測試的時候,我們遇到接**的case。這個問題的難點在於要自動的實現某乙個時刻有**打進來才能起作用。像我上篇文章寫的case,是乙個接**的case,那麼要想讓該case起作用,我就得啟動case後,手動撥乙個**給該手機。這不叫自動化,只能稱為半自動化。那麼有沒有辦法能讓某個手機在莫個時間準確的打個**過來。

現在獲取手機號的方式有2種,一種發簡訊給10086,但是不是所有運營商的手機都可以。那麼打**算最靠譜了吧。所以我們需要乙個機器來接受來電,然後記錄下來電號碼,暫且稱該手機為總機。只要給總機撥個**,那麼總機就能知道手機號了。如果這個時候,再回撥給該手機,也就是實現了在某個時刻準確的打個**過來。

所以得在總機上安裝個apk,用broadcastreceiver來處理這種需求。

public class phonereceiver extends broadcastreceiver else else {

telephonymanager tm = (telephonymanager) context.getsystemservice(service.telephony_service);

tm.listen(listener, phonestatelistener.listen_call_state);

phonestatelistener listener = new phonestatelistener() {

@override

public void oncallstatechanged(int state, string incomingnumber) {

log.d(tag, "**狀態發生改變" + incomingnumber);

switch (state) {

case telephonymanager.call_state_idle:

log.d(tag, string.format("**狀態變為空閒"));

if (!hascallback && lastincomingnumber != null && lastincomingnumber.length() != 0) {

hascallback = true;

log.d(tag, string.format("已結束通話和 %s 的通話", lastincomingnumber));

intent phoneintent = new intent("android.intent.action.call", uri.parse("tel:" + lastincomingnumber));

phoneintent.addflags(intent.flag_activity_new_task);

context.startactivity(phoneintent);

break;

case telephonymanager.call_state_offhook:

break;

case telephonymanager.call_state_ringing:

log.d(tag, string.format("收到%s的來電", incomingnumber));

hascallback = false;

lastincomingnumber = incomingnumber;

break;

老李分享 接電話之uiautomator 1

該介面中只有乙個方法 public abstract boolean checkforcondition 當我們通過uiselector匹配控制項的時候,如果失敗後,會進入該方法進行驗證。意思只要我們的控制項找不到,都會進入該方法中,那麼我們就可以在該方法中判斷是否有 打進來。首先我們去檢視有 打進...

你就這麼不接電話

2009 4 26 週末不接 原本認為只是你的玩笑,抑或是你的願望,然而幾個週末下來,你果真不接 而且還那麼 斷然 這讓我猝不及防,始料未及!你要冷酷起來的時候會有 273 我懷疑自己還能否抵禦這樣的寒流!也許最近一段時間的低落感染了你,可你知道,想象你幸福掛在嘴角,愉快描在眉梢,就會讓我在艱辛的奮...

android電話流程 打電話,接電話,結束通話電話

一 android打 流程 1 打 的入口是在outgoingcallbroadcaster這個類中,下層我就沒深入去理解了,此類是繼承的activity,在其oncreate方法裡面用intent去接收需要撥打的 然後判斷此號碼是否為緊急號碼 1 如果為緊急號碼 立即啟動incallscreen類...