2011-06-19 12 views
7

Próbuję uruchomić działanie z odbiornika broadcast, który słucha połączenia wychodzące, który jest 5556. Problemem jest, że aktywność nie jest uruchamiany, ale wbudowana aktywność wybierania numeru jest nazywany, zmieniłem priorytet zamiaru na 100, ale bez skutku. Jak mogę uruchomić aktywność na tarczy zamiast wbudowanej aktywności telefonicznej? Oto kod:uruchamianie działania z odbiornika broadcast, który nasłuchuje połączenia wychodzącego

package com.messageHider; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.widget.Toast; 

public class launchReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     String number=intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 
     String compare_num="5556"; 
     if(number.equals(compare_num)) 
     { 
      Intent myintent=new Intent(context,messageHider.class); 
      myintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(myintent); 
      abortBroadcast(); 
     } 
    } 

} 

Manifest pliku:

<receiver android:name=".launchReceiver"> 
    <intent-filter android:priority="0"> 
     <action android:name="android.intent.action.NEW_OUTGOING_CALL"/> 
    </intent-filter> 
</receiver> 
+0

Czy kiedykolwiek trafiłeś w prawo? – Zapnologica

Odpowiedz

3

W swoim manifeście wymagać jednego pozwolenia (zgodnie z docs):

Musisz posiadać pozwolenie PROCESS_OUTGOING_CALLS do otrzymasz ten zamiar .

I to

"android.permission.PROCESS_OUTGOING_CALLS" 

także prosto z docs:

Wszelkie BroadcastReceiver otrzymaniu Ta metoda nie może przerwać transmisję.

A tu jest link do strony, na której mam informację:

http://developer.android.com/reference/android/content/Intent.html

+0

Nie masz żadnego przykładowego kodu intencji? – Zapnologica

+0

Przesłana intencja to 'android.intent.action.NEW_OUTGOING_CALL'. Intencja jest wysyłana przez system. Kiedy ją otrzymasz, otrzymasz "EXTRA_PHONE_NUMBER" z danych intencji, musisz ustawić "resultData" na wartość null, jeśli chcesz, aby twoja aplikacja obsługiwała połączenie, lub możesz zmienić numer telefonu, a system będzie obsługiwać nowy numer. Nie używałem go od jakiegoś czasu, ale to właśnie dostaję od doktorów. To pomaga? Jeśli nie, to jaki dokładnie przykładowy kod chcesz? – Jakar

3

Zamiast przerywanie transmisji z abortBroadcast(); użyj setResultData (null), aby zakończyć połączenie po uruchomieniu aktywności.

Powiązane problemy