2015-09-30 133 views
0

我的应用程序生成调用如下(目的是从服务发送)立即终止呼叫:Intent.ACTION_CALL在某些设备上

Intent intent = new Intent(); 
    intent.setAction(Intent.ACTION_CALL); 
    intent.setData(Uri.parse("tel:" + getPhoneNumber()); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | intent.FLAG_ACTIVITY_MULTIPLE_TASK); 
    getContext().startActivity(intent); 

它有这个权限:

<uses-permission android:name="android.permission.CALL_PHONE"/> 

它的工作原理罚款大多数设备,但仅限于一些(三星S6,LG - 主要是棒棒堂),它有时会导致通话立即终止(并非总是如此,在通话的〜30-40%)。

日志显示,电信经理决定鬼使神差地挂断电话:

09-30 09:23:01.731 3565-3565/? I/Telecom﹕ : Delayed disconnection of call: [929220936, CONNECTING, null, ***-***-****, 
0, childs(0), has_parent(false), [[Capabilities:]] 

任何想法?

回答

0

要只需打开拨号应用程式(用户必须按拨号应用程式内呼叫按钮;不需要额外的权限)使用方法:

String number = "9999999999"; 
Uri call = Uri.parse("tel:" + number);    
Intent surf = new Intent(Intent.ACTION_DIAL, call); 
startActivity(surf); 

要打开拨号程序应用程序,并自动进行通话(需要android.permission.CALL_PHONE)使用:

String number = "9999999999"; 
    Uri call = Uri.parse("tel:" + number);    
    Intent surf = new Intent(Intent.ACTION_CALL, call); 
    startActivity(surf); 
+0

这正是我做了什么(在ACTION_CALL部分) ,但在某些设备上,它会打开拨号程序并立即关闭它(不确定,只是有时)。 – user2634975

0

您是否正在从BroadcastReceiver.onReceive内部启动呼叫? 我遇到同样的问题,它似乎是当接收器结束,它需要打倒它通话... 这为我工作:

  Intent callIntent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:" + phone)); 
      callIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
          context.startActivity(callIntent); 
          try { 
           Thread.sleep(5000); 
          } catch (InterruptedException e) { 
           // TODO Auto-generated catch block 
           e.printStackTrace(); 
          } 
相关问题