2013-05-03 2 views
0

привет :) Я работаю с SMS в Android. У меня проблема с моим классом приемника sms. когда я запускаю свое приложение в первый раз на эмуляторе, он работает, поскольку я запрограммировал его на работу. но когда каждый раз, когда я запускаю приложение снова, он не работает, так как я обновил его для работы. Я застрял последние 2 дня. может кто-нибудь плз мне помочь или оказать некоторую помощь. мой основной класс приемника:Мой обновленный SMS-приемник не работает Android

public class SMSreceiver extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 

    Bundle bundle = intent.getExtras(); 
    String Sender = null; 
    String str = ""; 
    SmsMessage [] msgs = null; 
    if(bundle != null) 
    { 
    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]); 
      Sender = msgs[i].getOriginatingAddress(); 
      str = "SMS From: " + msgs[i].getOriginatingAddress(); 
      str += ":"; 
      str += msgs[i].getMessageBody().toString(); 
      str += "\n"; 
     } 
     //Toast.makeText(context, str, Toast.LENGTH_LONG).show(); 
     Toast.makeText(context, Sender, Toast.LENGTH_LONG).show(); 
    } 

} 

в коде выше, я уже заметил тост, который показывает Сообщ и попытался отобразить тост, который показывает номер отправителя. но все же он показывает новый текст msg. это странно.

вот мой манифест:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.pingpongsmsremote" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="12" /> 
    <uses-permission android:name="android.permission.SEND_SMS"/> 
<uses-permission android:name="android.permission.RECEIVE_SMS"/> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.pingpongsmsremote.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> 
    <activity 
     android:name="com.example.pingpongsmsremote.SMSScheduler" 
     android:label="@string/title_activity_smsscheduler" > 
    </activity> 
    <activity 
     android:name="com.example.pingpongsmsremote.FilterSMS" 
     android:label="@string/title_activity_filter_sms" > 
    </activity> 
    <activity 
     android:name="com.example.pingpongsmsremote.SMSRemote" 
     android:label="@string/title_activity_smsremote" > 
    </activity> 
    <activity 
     android:name="com.example.pingpongsmsremote.SendSms" 
     android:label="@string/title_activity_send_sms" > 
    </activity> 
</application> 



</manifest> 
+0

Можете ли вы показать, где вы регистрируя приемник? Является ли она зарегистрирована в файле манифеста или в действии? – akhalsa

+0

@akhalsa yea, я gona редактирую текст вопроса с манифестом. посмотри на него – Zeeshan

+0

@akhalsa Я редактировал свой вопрос вместе с файлом манифеста. можете ли вы PLZ теперь взглянуть на него и рассказать, где проблема? спасибо :) – Zeeshan

ответ

2

Похоже, может быть, вы забыли зарегистрировать приемник? Вам нужна линия, как это в манифесте:

<receiver android:name="SMSreceiver" > 
      <intent-filter> 
       <action android:name="android.provider.telephony.SMS_RECEIVED"/> 
      </intent-filter> 
</receiver> 

Чтобы увидеть его в полном манифеста примере будет выглядеть следующим образом:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.pingpongsmsremote" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="12" /> 
    <uses-permission android:name="android.permission.SEND_SMS"/> 
<uses-permission android:name="android.permission.RECEIVE_SMS"/> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.pingpongsmsremote.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> 
    <activity 
     android:name="com.example.pingpongsmsremote.SMSScheduler" 
     android:label="@string/title_activity_smsscheduler" > 
    </activity> 
    <activity 
     android:name="com.example.pingpongsmsremote.FilterSMS" 
     android:label="@string/title_activity_filter_sms" > 
    </activity> 
    <activity 
     android:name="com.example.pingpongsmsremote.SMSRemote" 
     android:label="@string/title_activity_smsremote" > 
    </activity> 
    <activity 
     android:name="com.example.pingpongsmsremote.SendSms" 
     android:label="@string/title_activity_send_sms" > 
    </activity> 
    <receiver android:name="SMSreceiver" > 
       <intent-filter> 
        <action android:name="android.provider.telephony.SMS_RECEIVED"/> 
       </intent-filter> 
    </receiver> 
</application> 
</manifest> 
+0

, если вы не регистрируетесь где-нибудь в активности? – akhalsa

+0

прекрасный. я уверен, что в моем манифесте что-то отсутствует. но я не знаю, где это добавить? и что там нет такого тега с именем «receiver»: | .. plz help me – Zeeshan

+0

взгляните на манифесты в этом учебнике: http://www.vogella.com/articles/AndroidBroadcastReceiver/article.html – akhalsa

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