2016-10-29 2 views
-1

Я пытаюсь зарегистрировать и отменить регистрацию приемника состояния телефона на телефоне в службе, но он не стреляет вообще, я также объявил разрешение на доступ к телефону в манифесте.BraodCastReceiver не стреляет для прослушивателя состояния телефона android

Это мой приемник вещания.

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); 

      } 
     } 
    } 
} 

и вот сервис, который регистрирует и отменяет регистрацию трансляции.

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); 
    } 
} 

То есть, как я запустить службу

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

Он работал и раньше, но это не работает вообще в настоящее время.

+0

где вы называете 'startService()'? – nandsito

+0

в другом широковещательном приемнике. –

ответ

0

Я нашел ошибку, связанную с android 6.0 Мне нужно спросить у вас разрешения READ_PHONE_STATE, после чего приемник braodcast начал стрелять.

Смежные вопросы