2015-06-21 70 views
1

我寫每一個國際呼出呼叫的應用,給出了一個對話(對話這是一個活動)。該應用程序會中斷呼出併爲所有國際呼叫發出警報。在用戶確認時,將放置一個具有相同號碼的新呼叫。如何獲得我從我的應用程序發出的呼叫通話結束通知 - Android電子

我的應用程序是非常相似,這一個 Outgoing call don't start

但是我的廣播接收器接收,即使呼出,我從我的應用程序的地方,這會導致一個無限循環。我正在使用以下代碼在來自我的應用程序的通話被放置後禁用廣播接收器。

private void makeCall1(String number) { 
    PackageManager pm = mContext.getPackageManager(); 
    ComponentName componentName = new ComponentName(mContext,OutgoingCallReceiver.class); 
    pm.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 
    Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse(number)); 
startActivity(callIntent); 
    // Now wait for the call to end somehow and afterwards -> 
    // pm.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); 
} 

我怎樣才能恢復呼叫結束,它被放置由我,讓我可以寫一些代碼,使未來的呼叫廣播接收呼叫的通知。

+0

您需要添加一個變量來控制它......當'BroadCastReceiver'首先被調用(即當用戶調用的地方,這將是不從你的應用程序),然後將變量設置爲true ...現在,如果只有true,則顯示對話框,然後將該變量設置爲false。 – Psypher

+0

蘭芝斯您好,感謝您的回覆。當我設置一個標誌爲假後,我顯示對話框和發出呼叫從我的應用程序,是由我自己的廣播接收機接收到,我把從我的應用程序的調用(導致的無限循環).. 我必須在通話結束後將標誌設置爲假。任何想法如何得到這一點。 – user2314275

+0

嗨..我剛剛添加它作爲答案如下 – Psypher

回答

0

您需要添加一個變量來控制它......當廣播接收器首次調用(即這將是當用戶從地方您的應用程序調用,而不是),那麼變量設置爲true ...如果只有真正的現在然後顯示對話框,稍後在呼叫斷開時將變量設置爲false。

現在怎麼知道通話結束?

可以知道呼叫使用呼叫的狀態已斷開。

這些是狀態時呼叫是放置該

CALL_STATE_OFFHOOK->CALL_STATE_IDLE 

CALL_STATE_OFFHOOK - >當呼叫被放置在名爲 CALL_STATE_IDLE ----->當呼叫斷開

現在稱爲你想知道當呼叫已斷開,您可以設置一個變量來控制它在你的BroadCastReceiver

private static boolean isCalled=false; 
    ................ 
    ................ 
    @Override 
public void onReceive(Context context, Intent intent) { 
Bundle bundle = intent.getExtras(); 
String state = bundle.getString(TelephonyManager.EXTRA_STATE); 
    if (state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) { 
    isCalled= true; 
    Log.v("ranjapp", "Within DIALED NUMBER"); 
    } else if (state.equals(TelephonyManager.EXTRA_STATE_IDLE) && isCalled){ 
     Log.v("ranjapp", "Within IDLE"); 
     //ADD YOUR CODE FOR WHAT NEEDS TO BE DONE AT CALL DISCONNECT 
     isCalled=false; 
} 
......................... 
......................... 

還不要忘記在清單中添加的權限如下:

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
相關問題