2 votes

Fenêtre pop up pendant l'exécution du service dans Android

Quelqu'un peut-il me dire comment faire apparaître une fenêtre lorsque le service est en cours d'exécution dans Android, c'est-à-dire que je développe une application qui fera apparaître une fenêtre lorsqu'un appel entrant est détecté dans le téléphone Android. J'ai beaucoup cherché mais je n'ai pas trouvé d'explication exacte. Alors s'il vous plaît, dites-moi comment je peux faire cela.

Et j'utilise ce code. Quand je lance cette application, elle s'arrête de force.

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.os.Bundle;

public class CallHelper extends Activity
{

    /**
     * Listener to detect incoming calls. 
     */
    public class CallStateListener extends PhoneStateListener
    {

        @Override
        public void onCallStateChanged(int state, String incomingNumber) 
        {

            switch (state) {
            case TelephonyManager.CALL_STATE_RINGING:
                // called when someone is ringing to this phone
                    Intent i = new Intent(getApplicationContext(), Out.class);
                    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   //must be provided
                    getApplicationContext().startActivity(i);

                break;
            }
        }
    }

    /**
     * Broadcast receiver to detect the outgoing calls.
     */

    private Context ctx;
    private TelephonyManager tm;
    private CallStateListener callStateListener;

    public CallHelper(Context ctx) 
    {
        this.ctx = ctx;     
        callStateListener = new CallStateListener();

    }

    /**
     * Start calls detection.
     */
    public void start() 
    {
        tm = (TelephonyManager) ctx.getSystemService(Context.TELEPHONY_SERVICE);
        tm.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);
    }

    /**
     * Stop calls detection.
     */
    public void stop() 
    {
        tm.listen(callStateListener, PhoneStateListener.LISTEN_NONE);

    }
       //Intent intent = new Intent(); 
       //startService(intent);
}

Merci d'avance !!!!!

0voto

narendra singh Points 31
you can use the Broadcast receiver in your  service in manifest.xml
---------------------------------------------   
<receiver android:name="com.pericent.saferide.recciver.InComingCall" >
  <intent-filter>
       <action android:name="android.intent.action.PHONE_STATE" />
            </intent-filter>
        </receiver>
--------------------------------------------------
and when call is coming you call your activity in on receive method  of BroadcastReciver

and you change your code listener like this
-------------------------------------------------- 
switch(state) {
            case CALL_STATE_RINGING:
                checkCallAsUnreceived(incomingNumber);
                break;
            case CALL_STATE_OFFHOOK:    //call was received
                checkCallAsReceived();
                break;
            case CALL_STATE_IDLE:       //no active calls
                sendMsgIfCallWasntReceived();
                break;
        }
-------------------------------------------------------------

and for more detail you can see the below url:-
https://github.com/MarcinOS/AutoResponder

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X