首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从我的应用程序获取呼叫结束通知- Android

如何从我的应用程序获取呼叫结束通知- Android
EN

Stack Overflow用户
提问于 2015-06-21 14:48:14
回答 1查看 637关注 0票数 1

我正在编写一个应用程序,为每个国际呼出电话提供一个对话框(对话是一种活动)。应用程序中断呼出,并为所有国际呼叫发出警报。在用户确认时,将发出具有相同号码的新呼叫。

我的应用程序与这个Outgoing call don't start非常相似

然而,我的广播接收器甚至从我的应用程序接收到我发出的呼出呼叫,这将导致无限循环。在我的应用程序发出呼叫后,我使用以下代码禁用广播接收器。

代码语言:javascript
复制
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);
 }

如何检索我发出的呼叫的呼叫结束通知,以便我可以编写一些代码来使广播接收器能够处理将来的呼叫。

EN

回答 1

Stack Overflow用户

发布于 2015-06-22 14:03:56

您需要添加一个变量来控制BroadCastReceiver首先被调用(即,这将是当用户发出呼叫时,而不是从您的应用程序),然后将变量设置为true...Now,如果为true,则显示对话框,然后在调用断开时将变量设置为false。

现在怎么知道通话结束了呢?

您可以使用呼叫状态了解呼叫已断开。

这些是发出呼叫时的状态-

代码语言:javascript
复制
CALL_STATE_OFFHOOK->CALL_STATE_IDLE

CALL_STATE_OFFHOOK-->发起呼叫时调用CALL_STATE_IDLE->呼叫断开时调用

现在您想知道呼叫何时断开,您可以在BroadCastReceiver中设置一个变量来控制它

代码语言:javascript
复制
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;
 }
 .........................
 .........................

另外,请不要忘记在清单中添加权限,如下所示:

代码语言:javascript
复制
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30962015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档