我試圖找出今天我桌上的一個bug。我沒有爲java/android開發太多,但我試圖找出這個問題。Android調用撥號
我有一個已退出的同事開發的android應用程序。目前該應用程序在2.2中運行。但是,在2.3下運行應用程序失敗。
它的一個應用程序,可以幫助在電信公司交換機內傳輸呼叫。
所以會發生什麼呢。
Person A(內部編號001)接收Mr Mr。 Person A答案和sais嗨Yeah Person B(內部編號002)對這個問題有很大的瞭解!讓我把你轉移給他!
A然後在他的手機上呼叫002,並等待約10(足夠長的時間讓呼叫通過並開始損壞),然後再撥打4號(內部電信轉接命令)將MR.X傳送給Person B.
這簡而言之就是應用程序通過點擊列表中的某個人而完成的工作。
首先呼叫人B,延時10 SEK呼叫號碼4.
//Initial Call(002)
public void callNumber(String callnum){
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+callnum));
startActivity(intent);
if(isAutomaticTransfer && stateString.equals("Off Hook")){
_initTask = new InitTask();
_initTask.execute(this);
}
}
然後
protected class InitTask extends AsyncTask<Context, Integer, Integer>{
@Override
protected Integer doInBackground(Context... arg0) {
try {
Thread.sleep(delayLength);
Intent intentTransfer = new Intent(Intent.ACTION_CALL);
intentTransfer.setData(Uri.parse("tel:" + transfernum));
intentTransfer.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intentTransfer);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
如上所述這個作品2.2。
但是在2.3中我得到了下面的堆棧跟蹤。
/ActivityManager( 61): Starting: Intent { act=android.phone.extra.NEW_CALL_IN
TENT dat=tel:xxx-xxx-xxxx flg=0x10000000 cmp=com.android.phone/.SipCallOptionHan
dler (has extras) } from pid 123
V/SipCallOptionHandler( 123): Call option is SIP_ADDRESS_ONLY
I/ActivityManager( 61): Starting: Intent { act=android.intent.action.CALL dat=
tel:xxx-xxx-xxxx flg=0x10000000 cmp=com.android.phone/.InCallScreen (has extras)
} from pid 123
D/CallManager( 123): hasBgCall: false sameChannel:true
D/dalvikvm( 123): GC_CONCURRENT freed 305K, 48% free 3199K/6151K, external 6585
K/6853K, paused 14ms+5ms
D/dalvikvm( 61): GREF has increased to 401
D/dalvikvm( 123): GC_EXTERNAL_ALLOC freed 8K, 49% free 3191K/6151K, external 59
27K/6853K, paused 63ms
W/InputManagerService( 61): Starting input on non-focused client com.android.i
[email protected] (uid=10035 pid=343)
D/dalvikvm( 130): GC_EXPLICIT freed 135K, 50% free 2949K/5895K, external 5959K/
7152K, paused 75ms
I/ActivityManager( 61): Starting: Intent { act=android.intent.action.CALL dat=
tel:xxx-xxx-xxxx flg=0x10000000 cmp=com.android.phone/.OutgoingCallBroadcaster }
from pid 343
D/PhoneUtils( 123): checkAndCopyPhoneProviderExtras: some or all extras are mis
sing.
D/PhoneUtils( 123): checkAndCopyPhoneProviderExtras: some or all extras are mis
sing.
I/ActivityManager( 61): Starting: Intent { act=android.phone.extra.NEW_CALL_IN
TENT dat=tel:xxx-xxx-xxxx flg=0x10000000 cmp=com.android.phone/.SipCallOptionHan
dler (has extras) } from pid 123
V/SipCallOptionHandler( 123): Call option is SIP_ADDRESS_ONLY
I/ActivityManager( 61): Starting: Intent { act=android.intent.action.CALL dat=
tel:xxx-xxx-xxxx flg=0x10000000 cmp=com.android.phone/.InCallScreen (has extras)
} from pid 123
W/PhoneUtils( 123): Exception from phone.dial()
W/PhoneUtils( 123): com.android.internal.telephony.CallStateException: cannot d
ial in current state
W/PhoneUtils( 123): at com.android.internal.telephony.CallManager.dial(CallM
anager.java:704)
W/PhoneUtils( 123): at com.android.phone.PhoneUtils.placeCall(PhoneUtils.jav
a:539)
W/PhoneUtils( 123): at com.android.phone.InCallScreen.placeCall(InCallScreen
.java:2667)
W/PhoneUtils( 123): at com.android.phone.InCallScreen.internalResolveIntent(
InCallScreen.java:1188)
W/PhoneUtils( 123): at com.android.phone.InCallScreen.onNewIntent(InCallScre
en.java:1126)
W/PhoneUtils( 123): at android.app.Instrumentation.callActivityOnNewIntent(I
nstrumentation.java:1119)
W/PhoneUtils( 123): at android.app.ActivityThread.deliverNewIntents(Activity
Thread.java:1722)
W/PhoneUtils( 123): at android.app.ActivityThread.performNewIntents(Activity
Thread.java:1734)
W/PhoneUtils( 123): at android.app.ActivityThread.handleNewIntent(ActivityTh
read.java:1742)
W/PhoneUtils( 123): at android.app.ActivityThread.access$2300(ActivityThread
.java:117)
W/PhoneUtils( 123): at android.app.ActivityThread$H.handleMessage(ActivityTh
read.java:978)
W/PhoneUtils( 123): at android.os.Handler.dispatchMessage(Handler.java:99)
W/PhoneUtils( 123): at android.os.Looper.loop(Looper.java:123)
W/PhoneUtils( 123): at android.app.ActivityThread.main(ActivityThread.java:3
683)
W/PhoneUtils( 123): at java.lang.reflect.Method.invokeNative(Native Method)
W/PhoneUtils( 123): at java.lang.reflect.Method.invoke(Method.java:507)
W/PhoneUtils( 123): at com.android.internal.os.ZygoteInit$MethodAndArgsCalle
r.run(ZygoteInit.java:839)
W/PhoneUtils( 123): at com.android.internal.os.ZygoteInit.main(ZygoteInit.ja
va:597)
W/PhoneUtils( 123): at dalvik.system.NativeStart.main(Native Method)
W/InCallScreen( 123): placeCall: PhoneUtils.placeCall() FAILED for number '4'.
W/InCallScreen( 123): onNewIntent: status CALL_FAILED from internalResolveInten
t()
W/InputManagerService( 61): Window already focused, ignoring focus gain of: co
[email protected]
D/dalvikvm( 125): GC_CONCURRENT freed 255K, 51% free 2844K/5767K, external 2219
K/2674K, paused 6ms+94ms
所以我想問一下,在我把這麼多小時放在這個問題上之前,是否有一個簡單的解決方案來解決這個問題?
謝謝!
編輯:我甚至嘗試過手動執行這個程序(接受一個包含呼叫,擱置,呼叫同事,再次呼叫數字4轉移它)同樣的錯誤,應用程序獲取。那麼android是否阻止了移動交換機的functinallity?
編輯:此錯誤隻影響谷歌的「香草」Android手機。 HTC三星沒有它!確認案例:Nexus S
您確定它在android 2.2中可用嗎?因爲只有當傳入/傳出的呼叫數大於2時纔會出現此問題...再次對照2.2檢查並讓我們知道.. 。 – Dinash 2011-05-05 13:10:09
它在anroid 2.2中有效,我們有一個工作應用程序,人們正在使用它,只有2.3的人無法訪問它。 – Anders 2011-05-06 06:34:29
什麼都沒有? :((((( – Anders 2011-05-12 07:54:27