Colgar una llamada

504 views
Skip to first unread message

yerca capa

unread,
Oct 15, 2011, 6:10:02 PM10/15/11
to desarrolladores-android
Hola buenas tengo una pregunta ya que he estado googleando y no tengo
muy claro si se puede o no hacer lo que quiero.

ejecutando el siguiente código mi aplicación llama a un numero
introducido en un EditText

Intent accionllamar = new Intent( Intent.ACTION_CALL ,
Uri.parse("tel:" + telefono.getText()));
startActivity(accionllamar);

y lo que quiero es poder cortar una llamada dependiendo del número al
que estoy llamando.

Osea tengo un BroadcastReceiver que al estar llamando a un número de
teléfono se ejecuta.

public class OutgoingCallReceiver extends BroadcastReceiver {

public static final String ABORT_PHONE_NUMBER = "123456789";

@Override
public void onReceive(final Context context, final Intent intent)
{
if
(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {

// get phone number from bundle
String phoneNumber =
intent.getExtras().getString(Intent.EXTRA_PHONE_NUMBER);
if ((phoneNumber != null) &&
phoneNumber.equals(this.ABORT_PHONE_NUMBER)) {
//AQUI QUIERO QUE MI APLICACION CUELGE EL TELEFONO.
abortBroadcast();

}else{
//AQUI HACER OTRA COSA
}
}
}
}

Es posible colgar el telefono si el numero es igual al especificado
por mi?

Parece ser que hay aplicaciones que cuelgan por ejemplo al pasar X
minutos hablando por el movil, osea que se supone que colgar se puede
colgar.
En cambio he leido que no es posible.

Si alguien sabe si se puede y como es por favor una ayuda

Muchas gracias

Ing. Marco Antonio Salgado

unread,
Oct 16, 2011, 12:41:48 AM10/16/11
to desarrollad...@googlegroups.com
Pues en un programe que hice fué que en el mismo ACTION_NEW_OUTGOING_CALL despues de verificar el número haces, setResultData(null) y eso cancelará la llamada.. ent u caso sería en lugar de la funcion de abortBroadcast()





2011/10/15 yerca capa <estais...@gmail.com>

--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.




--
________________________________

Ing. Marco Antonio Salgado Mtz.
ma...@iie.org.mx
ing....@gmail.com
Grupo de Realidad Virtual del Instituto de Investigaciones Eléctricas
Calle Reforma 113, Col. Palmira, C.P. 62490 Cuernavaca, Morelos, México
Teléfono: (777) 3623811 EXT 7841


yerca capa

unread,
Oct 16, 2011, 10:34:22 AM10/16/11
to desarrolladores-android
si con setResultData(null); lo que hace es que corta la llamada. Pero
no es exactamente lo que quiero, o si no estoy seguro.

a ver lo que quiero es que corte la llamada cuando el estado del
teléfono es EXTRA_STATE_OFFHOOK osea cuando estas llamando y empieza a
sonar como que se esta llamando.

este es mi cogido ahora.

public class OutgoingCallReceiver extends BroadcastReceiver {

public static final String ABORT_PHONE_NUMBER = "686653392";

@Override
public void onReceive( Context context, Intent intent) {
Bundle bundle = intent.getExtras();
if(null == bundle) return;
String state = bundle.getString(TelephonyManager.EXTRA_STATE);
Toast.makeText(context, "COMPROBAR ESTADO " +
state,Toast.LENGTH_LONG).show();
/// ESTO ES SI EL TELEFONO ESTA EN ESTADO SONANDO, tambien se
puede detectar si esta hablando y si finalizo la llamada
if(state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)){
Toast.makeText(context, "ESTADO 1 " +
state,Toast.LENGTH_LONG).show();
setResultData(null);
//abortBroadcast();
}
}
}

en el manifest


<receiver android:name=".OutgoingCallReceiver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"/
>
</intent-filter>
</receiver>

Pero ahora con setResultData(null); no corta la llamada.

Alguna idea?

Ing. Marco Antonio Salgado

unread,
Oct 16, 2011, 6:08:59 PM10/16/11
to desarrollad...@googlegroups.com

El problema de EXTRA_OFFHOOK_STATE es que ya estando en ese punto la única manera es usar reflection para lograr terminar la llamada... La contra es q en cualquier momento los desarrolladores del sdk pueden quitar o cambiar esas clases y tu app dejaria de funcionar. En lo personal siento q no nos dejaron muchas herramientas para jugar en cuanto a telefonia a los desarrolladores d apps pero  por otro lado el dejar demasiado flexible podría generar huecos de seguridad... Si el tono de marcado es para saber que se marcó pero lo cancelaste.. Creo q quedaria con un custom toast..

yerca capa

unread,
Oct 17, 2011, 8:07:16 AM10/17/11
to desarrolladores-android
A ver te cuento lo que quiero hacer exactamente. Lo que quiero es una
aplicación para dar toques (osea un llama y cuelga). la aplicación
tendría la lista de contactos y al seleccionar uno de ellos se le da
un toque. osea un ACTION_CALL y claro luego en el momento que le este
sonando a la persona (EXTRA_OFFHOOK_STATE) esperar un segundo y
colgar. Se que es una tontería quero es por si estas en el coche no
tener que estar con el teléfono en la oreja. Pensé que se podía hacer
sin problemas pero no veo la solución. Si lo hago con
ACTION_NEW_OUTGOING_CALL ni siquiera se ve la pantalla de llamada
simplemente no llama.

Alguna solución? No se a que te refieres con lo de reflection ni se
que es estoy empezando con android y en java tampoco soy un experto
jeje.

Bueno si alguien sabe por donde tengo que mirar o alguna idea que me
ayude y le daré un toque jejeje.

Gracias

On 16 oct, 23:08, "Ing. Marco Antonio Salgado" <ing.ma...@gmail.com>
wrote:
> El problema de EXTRA_OFFHOOK_STATE es que ya estando en ese punto la única
> manera es usar reflection para lograr terminar la llamada... La contra es q
> en cualquier momento los desarrolladores del sdk pueden quitar o cambiar
> esas clases y tu app dejaria de funcionar. En lo personal siento q no nos
> dejaron muchas herramientas para jugar en cuanto a telefonia a los
> desarrolladores d apps pero  por otro lado el dejar demasiado flexible
> podría generar huecos de seguridad... Si el tono de marcado es para saber
> que se marcó pero lo cancelaste.. Creo q quedaria con un custom toast..
Reply all
Reply to author
Forward
0 new messages