2012-07-30 12 views
5

Come faccio a avviare la mia app quando viene inserito un codice segreto, come *#*#12345#*#* nel dialer?Avvia l'app quando viene inserito il codice segreto?

Non sono riuscito a trovare una soluzione nei documenti Android.

+0

Perché non si implementa solo uno splashscreen, sul quale è necessario inserire un codice? – 4ndro1d

risposta

9

Ecco come ho fatto:

ho cambiato la mia attività principale non avere intent-filtri:

<activity 
      android:name=".ParentTrap" 
      android:label="@string/title_activity_parent_trap" 
      android:theme="@android:style/Theme.Holo" > 
     </activity> 

Allora ho fatto un ricevitore trasmissione con l'azione di filtro intento: android.provider.Telephony.SECRET_CODE

Ho quindi aggiunto i dati ad esso. L'intera cosa è qui sotto:

<receiver android:name=".ParentTrap$Launch" > 
      <intent-filter> 
       <action android:name="android.provider.Telephony.SECRET_CODE" /> 

       <data 
        android:host="(secret code)" 
        android:scheme="android_secret_code" /> 
      </intent-filter> 
     </receiver> 

Una volta fatto, fare una classe (ho fatto la classe di lancio nella mia classe principale, che si estende BroadCast ricevitore), quindi nella classe OnReceive, licenziare un intento di avviare l'attività.

Quindi digitando *#*#(secret code)#*#* nel dialer verrà avviata l'app.

+0

Non funziona per me su Samsung Galaxy Note GT-N7000 con Android 4.1.2. Dobbiamo fare qualcos'altro anche per farlo funzionare? – Manish

+0

@Manish è stata aperta l'app prima di provare? –

+0

Sì, ho creato un'attività vuota. Si prega di vedere la mia domanda relativa a questo: http://stackoverflow.com/questions/18901339/android-provider-telephony-secret-code-reserved-for-system-apps e, per favore, aiutatemi se potete. – Manish

6

Creare un ricevitore di broadcast con questa azione:

negli extra che si trovano the dialed number.

Modifica: Qui è tutorial per il destinatario della trasmissione.

+0

Non così ..... Ma potrebbe essere necessario. –

+0

non penso che tu sia in grado di intercettare la semplice azione di composizione senza effettivamente chiamare ... – eftokay83

+0

Ah, stavo parlando dei codici segreti * # * #, ma ho capito come usarli :) –

0

Ricevitore di trasmissione potrebbe essere necessario registrarsi all'intento di attività corretto. Ad esempio, Intent.ACTION_CALL sembra promettente. Il problema è come filtrare gli intenti per ricevere solo questo numero speciofico. Ho il sospetto che sarebbe simile a questa (sto Gesing sulla base di quello che ho trovato nella documentazione):

<action name=".YourAction"> 
    <intent-filter . . . > 
     <action android:name="android.intent.action.CALL" /> 
     <!-- data is crutial here, you have to figuire it out exacly yourself --> 
     <data android:scheme="tel" android:path="yourSpecyficSecretCode" /> 
    </intent-filter> 
</action> 

sguardo here e here. Usa LogCat per vedere quali contatelli di intenti esatti puoi filtrare correttamente.

Problemi correlati