2013-12-09 4 views
0

Мне нужно запустить трансляцию с помощью службы, и она не работает, я следил за некоторыми учебниками, и все кажется правильным, но это не так.BroadcastReceiver не начинается с сервиса

Вот мой код:

public class ServiceNotif extends Service{ 


     smsReceiver receiver; 
      private static final IntentFilter intentFilter = 
        new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); 

     @Override 
     public void onCreate() { 
      // TODO Auto-generated method stub 
      super.onCreate(); 
      Log.w("A intrat in service"," "); 
      Toast.makeText(getBaseContext(), 
        "A intrat in service", 
        Toast.LENGTH_SHORT).show(); 
      //daca primesc un mesaj se intra in functia asta 
receiver = new smsReceiver(); 
      registerReceiver(receiver, intentFilter); 
     } 

     @Override 
     public void onDestroy() { 
      // TODO Auto-generated method stub 
      super.onDestroy(); 
      unregisterReceiver(receiver); 
     } 

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

     // This is the object that receives interactions from clients. See 
     // RemoteService for a more complete example. 
     private final IBinder mBinder = new LocalBinder(); 

     /** 
     * Class for clients to access. Because we know this service always 
     * runs in the same process as its clients, we don't need to deal with 
     * IPC. 
     */ 
     public class LocalBinder extends Binder { 
      ServiceNotif getService() { 
       return ServiceNotif.this; 
      } 
     } 
     @Override 
     public int onStartCommand(Intent intent, int flags, int startId) { 
      Log.i("LocalService", "Received start id " + startId + ": " + intent); 
      // We want this service to continue running until it is explicitly 
      // stopped, so return sticky. 
      return START_STICKY; 
     } 

    } 

Почему не приемник получить срабатывает, когда я получаю сообщение?

EDIT: Я также получаю это в моем журнале:

12-09 08:16:05.708: W/GAV3(1183): Thread[GAThread,5,main]: Service unavailable (code=1), will retry. 
12-09 08:16:05.718: I/GAV3(1183): Thread[GAThread,5,main]: No campaign data found. 
12-09 08:16:10.779: W/GAV3(1183): Thread[Service Reconnect,5,main]: Service unavailable (code=1), using local store. 

ответ

1

Почему не приемник получить срабатывает, когда я получаю сообщение?

Поскольку вы не инициализировали Receiver. Инициируйте его в onCreate() перед регистрацией.

@Override 
public void onCreate() { 
    super.onCreate(); 
    Log.w("A intrat in service"," "); 
    Toast.makeText(getBaseContext(), 
      "A intrat in service", 
      Toast.LENGTH_SHORT).show(); 
    //daca primesc un mesaj se intra in functia asta 
    receiver = new BroadcastReceiver(); // init the Receiver 
    registerReceiver(receiver, intentFilter); 
} 

Edit:

Убедитесь, что у вас есть право доступа в манифесте.

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

Я инициализировал приемник, но все еще не успел, я что-то написал в журнале с ресивера, и он не появляется в логарифме. –

+0

@VictorHolotescu См. Мое редактирование. Если вам не поможет, разместите код вашего ресивера. –

+0

У меня есть разрешение, у меня был приемник в моей деятельности, и он работал нормально, пока я не перевел его на службу. Может быть, проблема в том, что я тестирую ее на виртуальном устройстве, а не на моем телефоне? –

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