2014-12-19 3 views
0

Я пытаюсь сделать широковещательный приемник, который активирует действие, когда он получит определенный sms. это мой код для моего радиовещательного приемника:Что случилось с моим приемником?

import android.content.BroadcastReceiver; 
    import android.content.Context; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.telephony.SmsMessage; 

    public class ringMuhPhoneBR extends BroadcastReceiver{ 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      Bundle extras = intent.getExtras(); 
      if(extras == null) 
       return; 

      Object[] pdus = (Object[]) extras.get("pdus"); 

      for (int i = 0; i < pdus.length; i++) { 
       SmsMessage SMessage = SmsMessage.createFromPdu((byte[]) pdus[i]); 
       String sender = SMessage.getOriginatingAddress(); 
       String body = SMessage.getMessageBody().toString(); 

       Intent it = new Intent(); 
       it.setAction("com.services.aiks.smsReader") 
         .putExtra("get_ring", sender + ":" + body); 
       context.startService(it); 
      } 
     } 
    } 

мне это нужно, чтобы начать smsReader сервиса, который имеет этот код

package com.services.aiks; 

    import android.app.Service; 
    import android.content.Context; 
    import android.content.Intent; 
    import android.media.AudioManager; 
    import android.os.IBinder; 
    import android.os.Vibrator; 
    import com.events.aiks.rmpActivate; 
    import com.sharedPref.aiks.SharedPref; 

    public class smsReader extends Service{ 

     AudioManager am; 
     Vibrator vb; 
     SharedPref sp; 

     String msgWhole; 
     String msgContent; 
     String msgSender; 
     int maxVolume; 

     String rmpk; 
     @Override 
     public IBinder onBind(Intent arg0) { 
      return null; 
     } 

     public void onStart(Intent intent, int startId){ 
      am = (AudioManager)getSystemService(AUDIO_SERVICE); 
      vb = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE); 
      sp = new SharedPref(this); 

      loadPrefs(); 

      msgWhole = intent.getStringExtra("get_ring"); 
      msgWhole = msgWhole.replace("\n", ""); 
      msgContent = msgWhole.substring(msgWhole.lastIndexOf(":") + 1,   msgWhole.length()); 
      msgSender = msgWhole.substring(0, msgWhole.lastIndexOf(":")); 

      try{ 
       if(rmpk.equalsIgnoreCase(msgContent)){ 
        Intent it = new Intent(smsReader.this, rmpActivate.class); 
        startActivity(it); 
       } 
      }catch(Exception e){ 

      } 
     } 

     public void loadPrefs(){ 
      rmpk = sp.strLoadPrefs("RMPK", "scream"); 
     } 
    } 

проблема, даже если я отправляю правильное ключевое слово, rmpActivate привычки Начало. Ive также попытался удалить условие, которое проверяет правильность получения правильного ключевого слова и по-прежнему не получает результата. Заранее благодарю за любую помощь. :)

+2

Похоже, вы забыли зарегистрировать приемник вещания. –

+0

Как мне это сделать? или где я это делаю. Благодарю. –

+0

В вашем манифесте – zozelfelfo

ответ

0

в вашем файле манифеста зарегистрируйтесь в своей трансляции.

<receiver android:name="Yourpackagename.ringMuhPhoneBR" > 
      <intent-filter> 
       <action android:name="com.services.aiks.smsReader" > 
       </action> 
      </intent-filter> 
     </receiver> 

надеюсь, он должен сработать для вас.

+0

в моем файле манифеста я есть '<действие android: name = "android.provider.Telephony.SMS_RECEIVED" /> ' –

+0

Должен ли я добавить android: имя в другое ? –

0

Ок, похоже, проблема была в версии для Android. Он не работал в 4.2.2, но когда я пробовал его в 4.0.3, этот рабочий шелк был гладким. xD Редактировать: его работа в обеих версиях. Работа в эмуляторе, но не в реальном устройстве. Мне так грустно.

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