2010-09-10 6 views
9

J'essaie de rediriger les appels sortants vers un autre numéro de téléphone sur un appareil Android. Donc, j'utilise un BroadcastReceiver "écoute" pour l'intention NEW_OUTGOING_CALL, sur sa méthode onReceive() j'utilise la méthode setResultData() pour changer le numéro de téléphone.Android: Rediriger les appels sortants

Comme ceci:

public void onReceive(Context arg0, Intent arg1) { 

    setResultData("351978923221"); 

} 

Dans l'émulateur tout va bien, mais sur mon appareil réel (un merdiques ZTE X850 avec Android 2.1, je crois), il n'a pas si l'intention d'appeler son origine dans un wich d'activité fait partie de la même application. Une fois l'écran de numérotation affiché, le téléphone termine l'appel.

Des pensées là-bas sur pourquoi cela se produit? Je sais que ma question est fondamentalement la même que this one mais j'ai choisi de demander à nouveau de toute façon pour fournir des détails supplémentaires sur ce qui ne va pas.


Fichier Manifest

Un extrait ...

<receiver android:name=".OutgoingCallDetection" android:exported="true"> 
     <intent-filter> 
      <action android:name="android.intent.action.NEW_OUTGOING_CALL" 
        android:priority="9999" /> 
     </intent-filter> 
    </receiver> 

</application> 

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

Pouvez-vous poster votre manifeste? Aussi pouvez-vous ajouter une vérification d'erreur là-bas et voir si elle prend quelque chose en haut (c'est-à-dire le numéro qu'il essayait de composer). "Log.v ('onReceive', 'numéro de téléphone:' + intention.getStringExtra (Intent.EXTRA_PHONE_NUMBER));" - La clé est la voir si c'est déjà là pour commencer. – xil3

+0

Juste ajouté les parties qui importent du fichier manifeste. Je reviendrai sur ce dernier aujourd'hui et posterai de nouvelles informations. –

+0

Je l'ai eu à travailler dans certaines conditions, je pense que le problème a à voir avec le numéro de téléphone qui arrive à la BroadcastReceiver ou définir avec setResultData(). par exemple. Si le numéro de téléphone que j'essaie d'appeler commence par le préfixe de mon pays, 351 doit avoir le premier caractère pour fonctionner, s'il n'a que le numéro de téléphone, cela fonctionne très bien. –

Répondre

4

Je coupé l'appel composé et recomposé le nouvel appel. Cela a fonctionné parfaitement sur l'appareil.

Ceci est la partie de code:

setResultData(null); 
Uri uri = Uri.fromParts("tel", "!Number to be dialed!", null); 
Intent newIntent = new Intent(Intent.ACTION_CALL, uri); 
newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(newIntent); 

Hope this helps.

Questions connexes