2013-10-16 3 views
0

Je suis nouveau à la programmation Android. J'ai écrit un programme qui intercepte l'appel entrant en utilisant BroacastReciever. Lorsque je démarre mon application, elle commence à fonctionner. Maintenant, le problème est quand je redémarre mon téléphone android, ce BroadcastReciever ne fonctionne pas. Donc, je suppose que je dois faire un service pour cela. Mais je ne sais pas quand commencer le service et où commencer BroadcastReciever.Comment faire fonctionner BroadcastReciever après le redémarrage?

code BroadcastReciever -

public class CallInterceptor extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 
    Toast.makeText(context, "Service started", Toast.LENGTH_LONG).show(); 
    Bundle extras = intent.getExtras(); 
    if (extras != null) { 
     String state = extras.getString(TelephonyManager.EXTRA_STATE); 
     Toast.makeText(context, "Phone is " + state, Toast.LENGTH_LONG).show(); 
     if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
      String phoneNumber = extras 
        .getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 
      Toast.makeText(context, "Call from " + phoneNumber, Toast.LENGTH_LONG).show(); 
      //sendSMS(phoneNumber); 

      //toggle ringer mode 
      AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); 
      toggleMode(am); 
     } 

    } 

} 

fichier AndroidManifest -

<receiver android:name="com.nagarro.service.CallInterceptor" > 
      <intent-filter> 
       <action android:name="android.intent.action.PHONE_STATE" > 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
       </action> 
      </intent-filter> 
     </receiver> 

Je ne pense pas <action android:name="android.intent.action.BOOT_COMPLETED" /> fonctionne.

Aussi, est-il possible de le faire sans service? Veuillez suggérer une approche qui m'aidera à intercepter l'appel evertime (même après le redémarrage).

Répondre

1

Vous avez incorrectement fermé votre première balise d'action. Votre récepteur section devrait ressembler à:

<receiver android:name="com.nagarro.service.CallInterceptor" > 
    <intent-filter> 
     <action android:name="android.intent.action.PHONE_STATE" /> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
</receiver> 

En outre, vous n'utilisez pas un service. Vous utilisez un récepteur de diffusion. Voir cette page pour les bases Application Fundamentals.

+0

Merci pour la correction des balises ... Je sais que je n'utilise pas de service, mais ma question est que ce code est suffisant ou dois-je faire un service? –

+0

Merci Mike..mon code fonctionne maintenant après avoir correctement fermé cette balise .. –

+0

En fait, je prévois d'exécuter ce BroacastReciever pour toujours en arrière-plan ... Est-ce un problème? –

Questions connexes