2016-10-29 5 views
-1

Ich versuche, den Telefonstatus-Rundfunkempfänger in einem Service zu registrieren und aufzuheben, aber sein überhaupt nicht feuernd, habe ich die Telefonstatuserlaubnis in manifest auch erklärt.BraodCastReceiver feuert nicht für Telefonstatus Hörer android

Hier ist mein Rundfunkempfänger.

public class IncomingCalls extends BroadcastReceiver { 
    private static String mLastState; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.i(ApplicationUtils.TAG, "IncomingCalls"); 
     String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 
     String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 
     if (!state.equals(mLastState)) { 
      mLastState = state; 
      Log.i(ApplicationUtils.TAG, state); 
      if (mLastState==TelephonyManager.EXTRA_STATE_RINGING) { 
       SmsManager smsManager = SmsManager.getDefault(); 
       smsManager.sendTextMessage(phoneNumber, null, CallListenService.MESSAGE, null, null); 

      } 
     } 
    } 
} 

und hier ist der Dienst, der die Sendung regitser und abmeldet.

public class CallListenService extends Service { 

    private static final String ACTION = "android.intent.action.PHONE_STATE"; 
    static IncomingCalls myReceiver; 
    public static String MESSAGE; 

    @Nullable 
    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     final IntentFilter theFilter = new IntentFilter(); 
     theFilter.addAction(ACTION); 
     myReceiver = new IncomingCalls(); 
     // Registers the receiver so that your service will listen for 
     // broadcasts 
     this.registerReceiver(myReceiver, theFilter); 

    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     MESSAGE = intent.getStringExtra(KEY_MESSAGE); 
     return super.onStartCommand(intent, flags, startId); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     // Do not forget to unregister the receiver!!! 
     this.unregisterReceiver(myReceiver); 
    } 
} 

Das ist, wie ich den Dienst

Intent intent1 = new Intent(context, CallListenService.class); 
         intent1.putExtra(KEY_MESSAGE, msg); 
         context.startService(intent1); 

starten Es wurde vor der Arbeit, aber es ist überhaupt nicht funktioniert jetzt.

+0

wo rufst du 'startService()'? – nandsito

+0

in einem anderen Rundfunkempfänger. –

Antwort

0

Ich finde der Bug war mit dem Android 6.0 Ich muss fragen Sie für READ_PHONE_STATE Erlaubnis und danach begann Braodcast Empfänger zu feuern.