Domanda

Sto cercando di inviare una trasmissione per simulare una chiamata in arrivo. Ho aggiunto l'autorizzazione nel file AndroidManifest.xml,

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

Quando provo a eseguire il programma, il telefono si riavvia. (Emulatore anche).

  Intent intent = new Intent();
    intent.setAction("android.intent.action.PHONE_STATE");
    intent.putExtra(TelephonyManager.EXTRA_STATE, TelephonyManager.CALL_STATE_RINGING);
    intent.putExtra("EXTRA_INCOMING_NUMBER", "923982398");
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    sendBroadcast(intent);
È stato utile?

Soluzione

Potrei sbagliare perché non riesco a trovare nulla nei dottori, ma direi che non è possibile "falsificare" una trasmissione di chiamate. È quasi certamente riservato come "sistema".

Pensaci: se le app potrebbero farlo, potrebbe semplicemente provocare "malizia" piuttosto che qualsiasi cosa dannosa, ma non è qualcosa che mi piacerebbe che accadesse sul mio telefono.

Crea un'azione "che squilla il telefono" da utilizzare per scopi di test e chiedi al tuo Broadcastreceiver di ascoltarlo. Quando arrivi a rilasciare l'app, cambia semplicemente il filtro intento di Broadcastreceiver per ascoltare quello reale.

Altri suggerimenti

Ho scaricato alcune delle app false chiamanti da Play Store e le ho testate. Ho scoperto che l'app solleva un evento che visualizza la GUI preliminata nella parte superiore della schermata di blocco e aggiunge la voce nei registri delle chiamate utilizzando il metodo Insert di ContentSolver.

L'app non utilizza il meccanismo di Inbuild Calling (Broadcast). Funziona solo la GUI sullo schermo e suona la suoneria/vibrazione predefinita.

Secondo le mie conoscenze, penso che non sia possibile fingere una trasmissione di suoneria di chiamata

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top