2013-11-19 12 views
1

Приветствую всех. Я отправляю сообщение на одно устройство и получаю этот sms в приложении другого устройства. Я использовал приемник Broascast для прослушивания тела или номера sms. Я принял все разрешения в манифесте, но мой репитер не звонил. Я использовал много вещей за 2 дня, связанных с проявляется как android: приоритет, android: enabled = "true", android: exporte, но stiil приемник не работает.Входящее сообщение Broadcastreceiver не работает

/* final SmsManager sms = SmsManager.getDefault();*/ 
@Override 
public void onReceive(Context context, Intent intent) { 

    Toast.makeText(context, "in receiver", Toast.LENGTH_SHORT).show(); 
    // TODO Auto-generated method stub 
    Log.e("out", "out"); 
    if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){ 
     Bundle bundle = intent.getExtras();   //---get the SMS message passed in--- 
     SmsMessage[] msgs = null; 
     String msg_from; 
     Toast.makeText(context, "broad cast reciver", Toast.LENGTH_SHORT).show(); 
     if (bundle != null){ 
      //---retrieve the SMS message received--- 
      try{ 
       Log.e("in", "in"); 
       Object[] pdus = (Object[]) bundle.get("pdus"); 
       msgs = new SmsMessage[pdus.length]; 
       for(int i=0; i<msgs.length; i++){ 
        msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]); 
        msg_from = msgs[i].getOriginatingAddress(); 
        String msgBody = msgs[i].getMessageBody(); 
       } 
      }catch(Exception e){ 

// Log.d («Исключение исключено», e.getMessage()); }} }}

манифеста .... <

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="17" /> 

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

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


<application android:icon="@drawable/ic_launcher"> 

    <activity android:name=".MainActivity" android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <receiver android:name=".SmsListener" android:enabled="true"  android:exported="true" android:permission="android.permission.BROADCAST_SMS"> 
     <intent-filter android:priority="1000"> 
      <action android:name="android.provider.Telephony.SMS_RECEIVED"/> 
     </intent-filter> 
    </receiver> 

</application> 

ответ

1

Когда я удалил другое приложение на своем устройстве, он также обладает такими же функциями, как мое приложение, например, приложение hello (проверьте в магазине воспроизведения). Затем я установил мое приложение, оно отлично работает. Я думаю, что другое приложение задает приоритет или другую вещь в манифесте для новых входящих sms.So по этой причине наше приложение широковещательный приемник не называется

1

ли ваш SmsListener продлить BroadcastReceiver:

public class SmsListener extends BroadcastReceiver { 

    public SmsListener() { 
    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     //you code here 
    } 
} 

И теперь вы можете зарегистрировать свой получатель в вашей основной деятельности:

String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; 

SmsListener smsListener = new SmsListener(); 

registerReceiver(smsListener, new IntentFilter(SMS_RECEIVED)); 

Не забудьте отменить регистрацию в конце.

+0

Я уже использовал эту штуку, но все же мой ресивер не работал – Mahi

0

Изменение приоритета на 1 заставило его работать на меня. Он по умолчанию был 1000.
Мне также пришлось изменить имя с .SmsListener на .MainActivity $ SmsListener, но это, вероятно, будет зависеть от того, где вы определили класс (в моем случае это было в MainActivity).

<receiver android:name=".MainActivity$SmsListener" 
     android:enabled="true" 
     android:exported="true" 
     android:permission="android.permission.BROADCAST_SMS"> 
     <intent-filter android:priority="1"> 
      <action android:name="android.provider.Telephony.SMS_RECEIVED"/> 
     </intent-filter> 
    </receiver> 
Смежные вопросы