2013-07-25 10 views
8

Sto sviluppando un'applicazione antifurto basata sull'avvio del servizio utilizzando un ricevitore di trasmissione per una ricevuta SMS.C'è un modo per avviare l'applicazione subito dopo l'installazione usando qualche "applicazione di supporto"?

Ma se il telefono è già perso, il ricevitore di trasmissione non funzionerà quando l'applicazione viene installata in remoto da Google Play poiché l'applicazione deve essere avviata almeno una volta per ricevere la trasmissione per la versione 3.0+.

Quindi, c'è un modo per avviare l'applicazione subito dopo l'installazione utilizzando alcune "applicazioni di supporto" o far funzionare il ricevitore di trasmissione per l'installazione remota?

+0

http://stackoverflow.com/questions/11872320/auto-launching-android-app-after-install – KOTIOS

+0

c'è un app su Google Play [Perso Android] (https://play.google. com/store/apps/details? id = com.androidlost & hl = en) che invoca il servizio di registrazione per i messaggi push di Google tramite un sms in arrivo senza avviare l'app nemmeno una volta per la versione 3.0+ – test

risposta

0

L'applicazione deve disporre dell'autorizzazione all'uso per android.permission.RECEIVE_SMS nel file manifest.

Una volta ottenuto è possibile registrare un ricevitore di trasmissione per android.provider.Telephony.SMS_RECEIVED.

Quindi ti consigliamo di creare il tuo receiver.

<receiver android:name=".SMSBroadcastReceiver"> 
    <intent-filter> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
    </intent-filter> 
</receiver> 

Il ricevitore dovrebbe estendere la BroadcastReceiver e nel metodo OnReceive() quando si riceve un'intenti per android.provider.Telephony.SMS_RECEIVED_ACTION si desidera recuperare il messaggio e determinare se si tratta di uno che si vuole prestare attenzione.

Il codice potrebbe essere simile a questo.

public class SMSBroadcastReceiver extends BroadcastReceiver { 
    private static final String TAG = "SMSBroadcastReceiver"; 
    private static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED" 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals(SMS_RECEIVED)) { 
      Bundle bundle = intent.getExtras(); 
      if (bundle != null) { 
       Object[] pdus = (Object[]) bundle.get("pdus"); 
       final SmsMessage[] messages = new SmsMessage[pdus.length]; 
       for (int i = 0; i < pdus.length; i++) { 
        messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
       } 
       if (messages.length > -1) { 
        //You have messages, do something with them here to determine if you want to look at them and other actions. 
       } 
      } 
     } 
    } 
} 
+0

Compagno che non hai capito il problema. Per favore leggi di nuovo la domanda. – test

+0

Si sta tentando di caricare la soluzione nell'applicazione nativa, ma dato lo scenario a condizione che l'utente non abbia probabilmente accesso alla propria applicazione per registrare il telefono. Invece farei un'installazione remota, registrerò il ricevitore (fatto automaticamente) e poi l'utente inserirà il suo numero su un sito web o un'altra piattaforma. Una volta terminato, attendere alcuni minuti per inviare il testo al numero fornito, [avvio servizio] (http://developer.android.com/reference/android/content/Context.html#startService (android.content.Intent)) e quindi vai alla tua allegra strada. – David

+0

scusa non ti ho preso. Sei a conoscenza del fatto che il ricevitore broadcast non funzionerà se l'applicazione non viene avviata almeno una volta (per la versione 3.0 sui reparti). – test

Problemi correlati