2015-09-22 2 views
0

Я использовал этот код для перестройки блоков sms. но когда я установил его на свой телефон и получил журнал sms, который не был напечатан в logcat. Я думаю, что этот класс не запускается при получении sms. здесь я добавляю класс и манифест BroadcastReceiver.класс для возврата sms не работает

public class SmsFilter extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 
Log.i("LOG","check if this class runs or not"); 




    if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) { 
     Bundle extras = intent.getExtras(); 
     if (extras != null) { 
      Object[] pdus = (Object[])extras.get("pdus"); 

      if (pdus.length < 1) return; // Invalid SMS. Not sure that it's possible. 

      StringBuilder sb = new StringBuilder(); 
      String sender = null; 
      for (int i = 0; i < pdus.length; i++) { 
       SmsMessage message = SmsMessage.createFromPdu((byte[]) pdus[i]); 
       if (sender == null) sender = message.getOriginatingAddress(); 
       String text = message.getMessageBody(); 
       if (text != null) sb.append(text); 
      } 

      Log.i("payam: ", "sms recived"); 
      Log.i("payam: ", sender); 



      if (sender != null && Search.search(sender)==true) { 


       abortBroadcast(); 

      } 
      return; 
     } 
    } 

    // ... 
} 




} 

манифеста:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="block.list" 
android:versionCode="1" 
android:versionName="1.0" > 
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
<uses-permission android:name="android.permission.CALL_PHONE"/> 
<uses-permission android:name="android.permission.READ_CONTACTS" /> 
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /> 

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

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 

     android:name=".FirstPage" 
     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=".receiver.SMSReceiver" android:enabled="true"> 
<intent-filter android:priority="999"> 
    <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
</intent-filter> 
</receiver> 


    <activity 

     android:name=".Search" 
     android:label="@string/app_name" > 

    </activity> 

    <activity 

     android:name=".BlockActivity" 
     android:label="@string/app_name" > 

    </activity> 


    <activity 
     android:name=".SmsFilter" 
     android:label="@string/app_name" > 

    </activity> 


    <activity 
     android:name=".CustomAdapter" 
     android:label="@string/app_name" > 

    </activity> 
</application> 

ответ

2

Вам необходимо добавить следующие разрешения -

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

Вот рабочий учебник Link