2016-08-22 4 views
0

У меня есть служба, работающая на переднем плане, внутри этой службы у меня есть широковещательный приемник, который прослушивает действие SMS_RECEIVED.Android-SMS_RECEIVED + широковещательная передача при сбое службы переднего плана

Когда пользователь находится внутри приложения (как приложение, так и служба находятся на переднем плане), все работает хорошо, и я получаю намерение.

Но когда пользователь существует приложение (только служба с широковещательной рассылкой находится на переднем плане), служба останавливается при получении sms.

Когда служба остановлена, отчеты об ошибках не найдены нигде (не в лог-кадре, и не появляется диалоговое окно с аварийной остановкой).

Моя служба с трансляцией:

public class myService extends IntentService { 
    private final BroadcastReceiver mReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      Toast.makeText(myService.this, intent.getAction(), Toast.LENGTH_SHORT).show(); 
     } 
    }; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     IntentFilter i= new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); 
     i.setPriority(999); 
     registerReceiver(mReceiver, receiverFilter); 
     startForeground(...); 
    } 

    public void onDestroy() { 
     super.onDestroy(); 
     stopForeground(true); 
    } 
} 

И я также следующее разрешение в моем манифесте:

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

MYSERVICE объявлен как это в манифесте:

<service 
     android:name=".Services.myService" 
     android:enabled="true" 
     android:exported="false" /> 
+0

Вы можете проверить logcat с ошибкой? –

+0

Эй, @MasterDisaster, там logcat не показывают ошибок. – user12597562891

+0

'крушение службы переднего плана', так что авария или авария. Если вы столкнулись с ошибкой, вы должны иметь ошибку в logcat. –

ответ

0

У меня была та же проблема, и я решил удалить <uses-permission android:name="android.permission.RECEIVE_SMS" />. Но, удалив это разрешение, я не могу обнаружить входящие SMS, поэтому создал такой класс Catching Outgoing SMS using ContentObserver и использовал MESSAGE_TYPE_RECEIVED = 1 вместо MESSAGE_TYPE_SENT = 2. Вы должны добавить это разрешение <uses-permission android:name="android.permission.READ_SMS" />.

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