2017-07-11 2 views
0

Lorsque je reçois un appel, je démarre le service, mais le problème survient lorsque je reçois un appel si je reçois un autre appel, puis je dois arrêter le service.Comment détecter un appel entrant pendant un autre appel et arrêter le service pendant un autre appel?

 String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 
     if (TelephonyManager.EXTRA_STATE_RINGING.equals(state)) { 
      String caller = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); 


Toast.makeText(context, "Ringing", Toast.LENGTH_SHORT).show(); 
      context.startService(new Intent(context, IdentityService.class) 
        .putExtra("number", caller) 
        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); 
      Log.d("RINGING","RINGING"); 




     } 
     if (TelephonyManager.EXTRA_STATE_OFFHOOK.equals(state)) 
     { 


      context.stopService(new Intent(context, IdentityService.class)); 
      context.stopService(new Intent(context, MessageService.class)); 




      Log.d("OFFHOOK","OFFHOOK"); 

     } 
+0

Vous ne devez pas arrêter le service. démarrer le même service avec une charge utile différente. – Jega

+0

N'a pas obtenu @jega –

+0

vérifier l'exemple ci-dessous – Jega

Répondre

0
int flag=0; 
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 
     if (TelephonyManager.EXTRA_STATE_RINGING.equals(state)) { 
flag++; 
if(flag>=2){ 
//stop service here 
} 
      String caller = 

intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); 

Toast.makeText(context, "Ringing", Toast.LENGTH_SHORT).show(); 
      context.startService(new Intent(context, IdentityService.class) 
        .putExtra("number", caller) 
        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); 
      Log.d("RINGING","RINGING"); 




     } 
     if (TelephonyManager.EXTRA_STATE_OFFHOOK.equals(state)) 
     { 


      context.stopService(new Intent(context, IdentityService.class)); 
      context.stopService(new Intent(context, MessageService.class)); 




      Log.d("OFFHOOK","OFFHOOK"); 

     } 
+0

ne fonctionne pas Bro @Bipin Gawand –

+0

valeur de drapeau de magasin dans pref et partagé y accéder. peut-il fonctionner –

+0

plzz pouvez-vous envoyer comment stocker dans pref et l'accès partagé –

0

Vous ne devez pas arrêter le service. démarrer le même service avec une charge utile différente. suivre l'exemple de service gestionnaire dans le lien ci-dessous

Example

public class HelloService extends Service { 
private Looper mServiceLooper; 
private ServiceHandler mServiceHandler; 
private boolean **callInprogreess**; 


    private final class ServiceHandler extends Handler { 
    public ServiceHandler(Looper looper) { 
     super(looper); 
    } 
    @Override 
    public void handleMessage(Message msg) { 
     if(callInprogress){ 
      // DO your stuff how you want to handle the call 
      }else{ 
      // Do your stuff for call 1 
      callInprogress=true; 
      } 

     } 
    } 
    @Override 
    public void onCreate() { 
     HandlerThread thread = new HandlerThread("ServiceStartArguments", 
     Process.THREAD_PRIORITY_BACKGROUND); 
    thread.start(); 

    // Get the HandlerThread's Looper and use it for our Handler 
    mServiceLooper = thread.getLooper(); 
    mServiceHandler = new ServiceHandler(mServiceLooper); 
     } 

     @Override 
     public int onStartCommand(Intent intent, int flags, int startId) { 
     Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show(); 

     // For each start request, send a message to start a job and deliver the 
     // start ID so we know which request we're stopping when we finish the job 
     Message msg = mServiceHandler.obtainMessage(); 
     msg.arg1 = startId; 
     mServiceHandler.sendMessage(msg); 

     // If we get killed, after returning from here, restart 
     return START_STICKY; 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     // We don't provide binding, so return null 
     return null; 
    } 

    @Override 
    public void onDestroy() { 
    Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show(); 
    } 
} 
+0

Ok bro je vais essayer –