2016-01-14 2 views
0

Я хочу, чтобы мое приложение, чтобы получать сообщения от определенного отправителя в моем приложении через BroadcastReceiver, к сожалению, он не работает, а не бросать какие-либо ошибки, Ниже приведен код для BroadcastReceiver:метод Android onReceiver() не работает

public void onReceive(Context context, Intent intent) { 
     // Get Bundle object contained in the SMS intent passed in 
     Bundle bundle = intent.getExtras(); 
     SmsMessage[]smsm=null; 
     String sms_str = ""; 
     if (bundle != null) { 
      // Get the SMS message 
      Object[] pdus = (Object[]) bundle.get("pdus"); 
      smsm = new SmsMessage[pdus.length]; 
      for (int i = 0; i < smsm.length; i++) { 
       smsm[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
       sms_str += "Sent From: " + smsm[i].getOriginatingAddress(); 
       sms_str += "\r\nMessage: "; 
       sms_str += smsm[i].getMessageBody().toString(); 
       sms_str += "\r\n"; 
      } 
      Log.d("TAG", sms_str); 

      // Start Application's MainActivty activity 
      Intent smsIntent = new Intent(context, MainActivity.class); 
      smsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      smsIntent.putExtra("sms_str", sms_str); 
      context.startActivity(smsIntent); 
     } 
    } 

в основной деятельности, у меня есть этот код для извлечения намерения:

// Get intent object sent from the SMSBroadcastReceiver 
     Intent sms_intent = getIntent(); 
     Bundle b = sms_intent.getExtras(); 
     if (b != null) { 
      // Display SMS in the TextView 
      txtViewSMS.setText(b.getString("sms_str")); 
     } 

Моего файл манифест имеет:

<!-- Declare SMS Broadcast receiver --> 
     <receiver android:name=".SMSBReceiver" 
      android:enabled="true"> 
      <intent-filter android:priority="999"> 
       <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
      </intent-filter> 
     </receiver> 

Просьба оказать помощь. Большое спасибо

+0

Вы получаете любую ошибку , если так, пожалуйста, отредактируйте вопрос с выходом logcat – OBX

+0

Можете ли вы поделиться какой ошибкой он метает? –

+0

Привет, я не получаю никаких ошибок, @Mike, Im тестирование на Android 4.1.1 и мой целевой SDK 23 – Kabs

ответ

2

Проверьте, если у вас есть такое разрешение в AndroidManifest.xml:

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

Кроме того, если имя класса приемника SMSBroadcastReceiver, то это имя должно быть использовано в AndroidManifest.xml:

<receiver android:name=".SMSBroadcastReceiver" 
     android:enabled="true"> 
    <intent-filter android:priority="999"> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
    </intent-filter> 
</receiver> 
+0

спасибо, что исправил его – Kabs

+0

@Kabs Рад помочь вам. Пожалуйста, примите ответ :) – mixel