2017-01-12 8 views
2

Как сделать пропущенный звонок из приложения android к указанному номеру. Я пробовал это, но он начнет звонок и будет ждать завершения вызова. Я хочу, чтобы звонок звонил один раз, а затем остановился. Пожалуйста, помогите мне.Пропущенный вызов в фоновом режиме в android

Intent callIntent = new Intent(Intent.ACTION_CALL); 
callIntent.setData(Uri.parse("tel:123456789")); 
startActivity(callIntent); 
+0

Я не думаю, что это возможно, потому что телефонный звонок сделан системой, вы не имеете контроля, если не укоренился, вы можете повесить трубку до начала вызова (http://stackoverflow.com/ вопросы/599443/how-to-hang-up-outgoing-call-in-android), но не в середине вызова – WenChao

ответ

0

сделать пропущенный вызов от андроид приложения на указанный номер

Вы можете достичь его, но не гарантируется (если другой человек получает вызов мгновенно)! Сделайте свой расчет, сколько времени потребуется на 1 кольцо. Запустите Thread/Timer, а затем вызовите этот метод, чтобы завершить вызов!

private void mEndCall() { 
     try { 
     String serviceManagerName = "android.os.ServiceManager"; 
     String serviceManagerNativeName = "android.os.ServiceManagerNative"; 
     String telephonyName = "com.android.internal.telephony.ITelephony"; 

     Class telephonyClass; 
     Class telephonyStubClass; 
     Class serviceManagerClass; 
     Class serviceManagerStubClass; 
     Class serviceManagerNativeClass; 
     Class serviceManagerNativeStubClass; 

     Method telephonyCall; 
     Method telephonyEndCall; 
     Method telephonyAnswerCall; 
     Method getDefault; 

     Method[] temps; 
     Constructor[] serviceManagerConstructor; 

     // Method getService; 
     Object telephonyObject; 
     Object serviceManagerObject; 

     telephonyClass = Class.forName(telephonyName); 
     telephonyStubClass = telephonyClass.getClasses()[0]; 
     serviceManagerClass = Class.forName(serviceManagerName); 
     serviceManagerNativeClass = Class.forName(serviceManagerNativeName); 

     Method getService = // getDefaults[29]; 
       serviceManagerClass.getMethod("getService", String.class); 

     Method tempInterfaceMethod = serviceManagerNativeClass.getMethod(
       "asInterface", IBinder.class); 

     Binder tmpBinder = new Binder(); 
     tmpBinder.attachInterface(null, "fake"); 

     serviceManagerObject = tempInterfaceMethod.invoke(null, tmpBinder); 
     IBinder retbinder = (IBinder) getService.invoke(serviceManagerObject, "phone"); 
     Method serviceMethod = telephonyStubClass.getMethod("asInterface", IBinder.class); 

     telephonyObject = serviceMethod.invoke(null, retbinder); 
     //telephonyCall = telephonyClass.getMethod("call", String.class); 
     telephonyEndCall = telephonyClass.getMethod("endCall"); 
     //telephonyAnswerCall = telephonyClass.getMethod("answerRingingCall"); 

     telephonyEndCall.invoke(telephonyObject); 

    } catch (Exception e) { 
     e.printStackTrace(); 
     Log.e("error", 
       "FATAL ERROR: could not connect to telephony subsystem"); 

    } 
} 
+0

Это не было бы надежным способом, так как время для разговора сильно варьируется. Спасибо за Ваш ответ. –

 Смежные вопросы

  • Нет связанных вопросов^_^