2014-03-28 2 views
2

Я разрабатываю приложение, в котором я хочу заблокировать SMS с определенными номерами. Для тестирования я делаю SMS с этого номера, который у меня есть в IF CONDITION, но этот код не блокирует это число SMS. Я стараюсь, но не решил. любой помощи me.Here мой код
Sms.javaБлокировать SMS в android

public class Sms extends BroadcastReceiver { 
      final SmsManager sms = SmsManager.getDefault(); 

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

       // Retrieves a map of extended data from the intent. 
       final Bundle bundle = intent.getExtras(); 

       try { 

        if (bundle != null) { 

         final Object[] pdusObj = (Object[]) bundle.get("pdus"); 

         for (int i = 0; i < pdusObj.length; i++) { 

          SmsMessage currentMessage = SmsMessage 
            .createFromPdu((byte[]) pdusObj[i]); 
          String phoneNumber = currentMessage 
            .getDisplayOriginatingAddress(); 

          String senderNum = phoneNumber; 
          String message = currentMessage.getDisplayMessageBody(); 

          Log.i("SmsReceiver", "senderNum: " + senderNum 
            + "; message: " + message); 


          // Show Alert 
          int duration = Toast.LENGTH_SHORT; 
          Toast toast = Toast.makeText(context, "senderNum: " 
            + senderNum + ", message: " + message, duration); 
          toast.show(); 
          if(senderNum=="+923215619915"){ 
           Toast.makeText(context, "You r in if condition", Toast.LENGTH_LONG).show(); 
           abortBroadcast(); 
          } 



         } // end for loop 
        } // bundle is null 

       } catch (Exception e) { 
        Log.e("SmsReceiver", "Exception smsReceiver" + e); 

       } 
      } 
     } 

Manifest.xml

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.example.tesingworkspace" 
     android:versionCode="1" 
     android:versionName="1.0" > 

     <uses-sdk android:minSdkVersion="7" 
      android:targetSdkVersion="19" 
      /> 
     <uses-permission android:name="android.permission.SEND_SMS" > 
     </uses-permission> 
     <uses-permission android:name="android.permission.READ_CONTACTS" /> 
     <uses-permission android:name="android.permission.RECEIVE_SMS" > 
     </uses-permission> 
     <uses-permission android:name="android.permission.READ_SMS"/> 

     <application 
      android:allowBackup="true" 
      android:icon="@drawable/ic_launcher" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme" > 
      <activity 
       android:name="com.example.tesingworkspace.BroadCastSms" 
       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="com.example.tesingworkspace.Sms"> 
       <intent-filter> 
        <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
       </intent-filter> 
      </receiver> 

     </application> 



    </manifest> 

ответ

3

Самое лучшее, что вам нужно сделать, это отладки кода, вы жестко закодированы номер телефона в формате, который может или не может произойти, убедитесь, что в каком формате отображается номер телефона вашего приемника? Когда я работал над этим, я отправлял сообщение за номером 0333xxx-xxxx, и я получал его как +92xxx. Но не уверен, что для всех, различных телекоммуникационных компаний могут использовать другой формат, для этого вы должны использовать

if(number.equals("+92333xxx-xxxxx")) или лучше использовать contains, что будет на самом деле сделать его более подходящим в соответствии с количеством и исключить возможность ошибки формата

if(number.contains("333xxx-xxxxx")){ 
    // Your code to abort message 
} 

Надеется, что это помогает

+0

Хорошо, сэр, я проверяю его и благодарю за ответ. –

+0

Я проверил этот код, но не решил проблему. Есть ли проблема в коде, чтобы прервать сообщение? –

+0

вы отлаживаете это? какой номер вы получаете? когда получено сообщение? – Saqib

1

Equals используется для сравнения только объекта. попытайтесь использовать if (senderNum.equalsIngnorecase ("+ 923215619915")) или если (senderNum.indexOf ("+ 923215619915")! = -1).

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