La Red de Conocimientos Pedagógicos - Conocimientos universitarios - 100 puntos Cómo hacer una llamada en Android sin mostrar la interfaz de llamada del sistema

100 puntos Cómo hacer una llamada en Android sin mostrar la interfaz de llamada del sistema

1. Utilice la reflexión para llamar a los métodos en "com.android.internal.telephony.PhoneFactory", "com.android.internal.telephony.CallManager" y "com.android.internal.telephony. Teléfono" .

El código es el siguiente:

llamada pública vacía (número de cadena, contexto de contexto) {

prueba {

clase final< ?> phoneFactoryClass = Class.forName("com.android.internal.telephony.PhoneFactory");

Método makeDefaultPhonesMethod = phoneFactoryClass.getDeclaredMethod("makeDefaultPhones", Context.class);

makeDefaultPhonesMethod. invoke(null, context);

Método getDefaultPhone = phoneFactoryClass.getDeclaredMethod("getDefaultPhone");

Objeto teléfono = getDefaultPhone.invoke(getDefaultPhone);

Clase final callManagerClass = Class.forName("com.android.internal.telphony.CallManager");

Método getInstanceMethod = callManagerClass.getDeclaredMethod("getInstance");

Objeto callManager = getInstanceMethod.invoke(getInstanceMethod);

Clase final phoneClass = Class.forName("com.android.internal.telephony.Phone");

Método registrarPhoneMethod = callManagerClass.getDeclaredMethod("registerPhone", phoneClass);

registerPhoneMethod.invoke(callManager, teléfono);

Método tal vezGetMethod = callManagerClass.getDeclaredMethod("getDefaultPhone");

Objeto teléfono1 = MaybeGetMethod.invoke(callManager);

Método marcar = phoneClass.getDeclaredMethod("dial", String.class);

dial.invoke (teléfono1, número);

} catch (ClassNotFoundException e) {

String cadena = e.getCause().toString();

Log.e ("CallTest ",cadena);

} catch (Excepción e) {

Cadena cadena = e.getCause().toString();

Registro .e( "Prueba de llamada", cadena);<

/p>

}

}

2. Agregue los siguientes permisos al manifiesto

paquete="com.example.callphone"

android:sharedUserId="android.uid.system"

android:versionCode="1"

android:versionName="1.0"

3. Firme el apk generado con el sistema. Los diferentes sistemas operativos tienen firmas diferentes. Por ejemplo, yo uso

java -jar signapk. .jar plataforma.x509.pem plataforma.pk8 Callphone_unsigned.apk Callphone_signed.apk. Entre ellos, platform.x509.pem platform.pk8 es diferente en diferentes sistemas operativos.

Nota: Sólo después de firmar con SharedUserId y el sistema el programa puede tener permiso para ejecutarse. De la misma manera, el programa no se puede depurar, sólo se puede rastrear el registro.