Come inviare trasmissioni di chiamate false su Android
-
27-10-2019 - |
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);
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