2013-03-14 1 views
2

J'essaye d'attraper un appel sortant dans un service et maintenant j'attendrais quelque chose dans la console de débogage. Je crée un DailerReceiver (qui est ajouté dans le manifeste et étend le BroadcastReceiver). Ensuite, je ajoute un IntentFilter avec android.intent.action.NEW_OUT_GOING_CALL et enregistrer le récepteur. Aussi, j'active le service dans le manifeste. Je m'attends à ce que ce sont les étapes requises.Attraper des appels sortants dans un service

Il existe également d'autres informations dans le manifeste. Je ne sais pas si c'est vraiment nécessaire mais je l'ai ajouté dans l'exemple pour avoir une vue d'ensemble.

Piece du service:

public class BackgroundService extends Service { 

    @Override 
    public void onCreate() { 
     DialerReceiver mReceiver = new DialerReceiver(); 
     IntentFilter filter = new IntentFilter(); 
     filter.addAction("android.intent.action.NEW_OUTGOING_CALL"); 
     this.registerReceiver(mReceiver, filter); 
    } 
} 

Classe DialerReceiver:

public class DialerReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context arg0, Intent arg1) { 
     // TODO Auto-generated method stub 
     debugOut("arg0: " + arg0.toString()); 
     debugOut("arg1: " + arg1.toString()); 
     debugOut("isOrderedBroadcast = " + isOrderedBroadcast()); 
    } 

    private static void debugOut(String str) { 
     Log.d("DialerReceiver", str); 
    } 
} 

partie du manifeste:

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> 

<receiver 
    android:name=".DialerReceiver" 
    android:enabled="true"> 
    <intent-filter android:priority="2147483647"> 
     <action android:name="android.intent.action.NEW_OUTGOING_CALL"/> 
    </intent-filter> 
</receiver> 

<service 
    android:name=".BackgroundService" 
    android:enabled="true">    
    <intent-filer> 
     <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>     
    </intent-filer> 
</service> 

journal des erreurs pleine de la minute un appel d'essai a eu lieu:

03-14 09:28:32.095: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount before onRestoreInstanceState0 
03-14 09:28:32.095: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount after onRestoreInstanceState0 
03-14 09:28:32.140: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount before onRestoreInstanceState0 
03-14 09:28:32.140: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount after onRestoreInstanceState0 
03-14 09:28:32.370: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount before onRestoreInstanceState36 
03-14 09:28:32.370: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount after onRestoreInstanceState36 
03-14 09:28:32.420: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount before onRestoreInstanceState32 
03-14 09:28:32.420: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount after onRestoreInstanceState32 
03-14 09:28:32.880: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount before onRestoreInstanceState779 
03-14 09:28:32.880: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount after onRestoreInstanceState779 
03-14 09:28:33.065: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount before onRestoreInstanceState779 
03-14 09:28:33.065: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount after onRestoreInstanceState779 
03-14 09:28:33.730: E/SpannableStringBuilder(31997): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 
03-14 09:28:33.730: E/SpannableStringBuilder(31997): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 
03-14 09:28:35.195: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount before onRestoreInstanceState5 
03-14 09:28:35.195: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount after onRestoreInstanceState5 
03-14 09:28:35.300: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount before onRestoreInstanceState154 
03-14 09:28:35.300: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount after onRestoreInstanceState154 
03-14 09:28:35.405: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount before onRestoreInstanceState154 
03-14 09:28:35.405: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount after onRestoreInstanceState154 
03-14 09:28:35.530: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount before onRestoreInstanceState154 
03-14 09:28:35.530: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount after onRestoreInstanceState154 
03-14 09:28:35.620: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount before onRestoreInstanceState37 
03-14 09:28:35.620: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount after onRestoreInstanceState37 
03-14 09:28:35.765: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount before onRestoreInstanceState37 
03-14 09:28:35.765: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount after onRestoreInstanceState37 
03-14 09:28:35.850: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount before onRestoreInstanceState7 
03-14 09:28:35.855: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount after onRestoreInstanceState7 
03-14 09:28:35.995: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount before onRestoreInstanceState7 
03-14 09:28:35.995: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount after onRestoreInstanceState7 
03-14 09:28:36.050: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount before onRestoreInstanceState7 
03-14 09:28:36.050: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount after onRestoreInstanceState7 
03-14 09:28:37.735: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount before onRestoreInstanceState5 
03-14 09:28:37.735: E/TwAdapterView(31997): TwAdapterView AdapterDataSetObserver onChanged ItemCount after onRestoreInstanceState5 
03-14 09:28:37.775: E/SpannableStringBuilder(31997): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 
03-14 09:28:37.775: E/SpannableStringBuilder(31997): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 
03-14 09:28:39.155: E/Bluetooth HS/HF(2853): handlePreciseCallStateChange() mPhone=OFFHOOK, mFCall=DIALING, mBCall=IDLE, mRCall=IDLE, mCallsetup=0, mCall=0, mCallheld=0 
03-14 09:28:39.155: E/Bluetooth HS/HF(2853): audioOn() 
03-14 09:28:39.155: E/Bluetooth HS/HF(2853): audioOn(): headset is not connected! 
03-14 09:28:39.170: E/TinyUCM(1921): There aren't inputs in map or set stereo(0) 
03-14 09:28:39.170: E/TinyUCM(1921): Stereo is already enabled 
03-14 09:28:39.170: E/TinyUCM(1921): modifier doesn't exists any more 
03-14 09:28:39.205: E/Bluetooth HS/HF(2853): handlePreciseCallStateChange() mPhone=OFFHOOK, mFCall=DIALING, mBCall=IDLE, mRCall=IDLE, mCallsetup=2, mCall=0, mCallheld=0 
03-14 09:28:39.205: E/Bluetooth HS/HF(2853): audioOn() 
03-14 09:28:39.205: E/Bluetooth HS/HF(2853): audioOn(): headset is not connected! 
03-14 09:28:39.390: E/Bluetooth HS/HF(2853): handlePreciseCallStateChange() mPhone=OFFHOOK, mFCall=DIALING, mBCall=IDLE, mRCall=IDLE, mCallsetup=2, mCall=0, mCallheld=0 
03-14 09:28:39.390: E/Bluetooth HS/HF(2853): audioOn() 
03-14 09:28:39.390: E/Bluetooth HS/HF(2853): audioOn(): headset is not connected! 
03-14 09:28:39.435: E/Bluetooth HS/HF(2853): handlePreciseCallStateChange() mPhone=OFFHOOK, mFCall=DIALING, mBCall=IDLE, mRCall=IDLE, mCallsetup=2, mCall=0, mCallheld=0 
03-14 09:28:39.435: E/Bluetooth HS/HF(2853): audioOn() 
03-14 09:28:39.435: E/Bluetooth HS/HF(2853): audioOn(): headset is not connected! 
03-14 09:28:41.820: E/TinyUCM(1921): modifier doesn't exists any more 
03-14 09:28:42.920: E/Bluetooth HS/HF(2853): handlePreciseCallStateChange() mPhone=OFFHOOK, mFCall=ALERTING, mBCall=IDLE, mRCall=IDLE, mCallsetup=2, mCall=0, mCallheld=0 
03-14 09:28:44.300: E/TinyUCM(1921): There aren't inputs in map or set stereo(2100000) 
03-14 09:28:44.300: E/TinyUCM(1921): Stereo is already enabled 
03-14 09:28:44.300: E/TinyUCM(1921): modifier doesn't exists any more 
03-14 09:28:45.205: E/Watchdog(2277): [email protected] 1113 
03-14 09:28:46.555: E/Bluetooth HS/HF(2853): handlePreciseCallStateChange() mPhone=OFFHOOK, mFCall=ACTIVE, mBCall=IDLE, mRCall=IDLE, mCallsetup=3, mCall=0, mCallheld=0 
03-14 09:28:46.555: E/Bluetooth HS/HF(2853): audioOn() 
03-14 09:28:46.555: E/Bluetooth HS/HF(2853): audioOn(): headset is not connected! 
03-14 09:28:50.105: E/Bluetooth HS/HF(2853): handlePreciseCallStateChange() mPhone=OFFHOOK, mFCall=DISCONNECTING, mBCall=IDLE, mRCall=IDLE, mCallsetup=0, mCall=1, mCallheld=0 
03-14 09:28:50.555: E/Bluetooth HS/HF(2853): audioOff(): mPendingScoForA2dp: false, mPendingScoForWbs: false, mConnectedSco: null, mA2dpState: 11, mA2dpSuspended: false, mVoiceRecognitionStarted: false 
03-14 09:28:50.605: E/TinyUCM(1921): modifier doesn't exists any more 
03-14 09:28:50.605: E/TinyUCM(1921): modifier doesn't exists any more 
03-14 09:28:50.605: E/TinyUCM(1921): Builtin Mic: active count 1 
03-14 09:28:50.605: E/TinyUCM(1921): Back Mic: active count 1 
03-14 09:28:50.605: E/TinyUCM(1921): modifier doesn't exists any more 
03-14 09:28:50.840: E/ActivityThread(2853): Failed to find provider info for com.cequint.ecid 
03-14 09:28:55.470: E/BargeInRecognizer(2853): stopBargeIn 
03-14 09:28:55.515: E/Bluetooth HS/HF(2853): handlePreciseCallStateChange() mPhone=IDLE, mFCall=IDLE, mBCall=IDLE, mRCall=IDLE, mCallsetup=0, mCall=0, mCallheld=0 
03-14 09:28:55.515: E/Bluetooth HS/HF(2853): audioOff(): mPendingScoForA2dp: false, mPendingScoForWbs: false, mConnectedSco: null, mA2dpState: 11, mA2dpSuspended: false, mVoiceRecognitionStarted: false 
03-14 09:28:55.900: E/WifiP2pStateTracker(2277): getNetworkInfo : NetworkInfo: type: WIFI_P2P[], state: UNKNOWN/IDLE, reason: (unspecified), extra: (none), roaming: false, failover: false, isAvailable: true 
03-14 09:28:58.175: E/WifiHW(2277): ##################### set firmware type 0 ##################### 
03-14 09:28:58.385: E/WifiHW(2277): ##################### set firmware type 0 ##################### 
+0

vous voulez qu'il attrape l'appel sortant même toujours? ou seulement lorsque l'application est en cours d'exécution – stinepike

Répondre

3

Toute raison pour laquelle vous essayez d'enregistrer le récepteur de diffusion dans le service. Et aussi - appelez-vous startService() de votre activité? Si oui, vous n'avez pas besoin

<intent-filer> 
    <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>     
</intent-filer> 

dans le manifeste pour le service. Je viens de créer un exemple d'application avec votre code, à l'exclusion du filtre d'intention pour le service, et mon onRecieve a bien fonctionné.

+0

Il semble que lorsque je supprime ce fichier d'intention, cela fonctionne parfaitement. –

+0

TYPO ALERTE! C'est ! – ralphgabb

1

Vous n'avez pas besoin d'ajouter cette

<intent-filer> 
     <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>     
    </intent-filer> 

dans le manifeste. Parce que vous enregistrez le récepteur dans le service onCreate().

Et vous n'avez pas besoin d'enregistrer le récepteur dans le manifeste aussi pour la même raison.

Vérifiez que vous avez ajouté android.permission.PROCESS_OUTGOING_CALLS dans le manifeste. Pour essayer une autre méthode: vérifiez this.

+0

Suppression de l'intention du filtre n'a pas aidé (n'a pas fait de mauvaises choses non plus). 'android.permission.PROCESS_OUTGOING_CALLS' était déjà dans le manifeste juste enlevé un peu trop pour cet exemple. –

+0

avez-vous des exceptions? –

+0

J'ai ajouté le journal des erreurs pendant une minute dans laquelle un appel de test a eu lieu. Je ne vois pas d'erreur (à mon avis) associée à ce problème. –

Questions connexes