2012-06-25 17 views
6

Sto lavorando a un'app che si spera possa bloccare gli SMS in arrivo (a seconda delle impostazioni dell'utente), ma ho problemi a rilevare i messaggi in arrivo.Blocca testi in arrivo (Android)

Ti dispiacerebbe guardare i miei codici e farmi sapere cosa sto facendo male? Ho esaminato le altre domande simili a questa, ma non riesco a trovarne alcuna con una risposta dettagliata o informazioni sufficienti per farmi riferimento.

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 

    public class SmsReceiver extends BroadcastReceiver{ 

    public void onReceive(Context context, Intent intent) { 
     if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){ 
      Bundle bundle = intent.getExtras(); 
      if (bundle != null){ 
       abortBroadcast(); 
      } 
     } 
    } 

    } 

Ecco il mio manifesto

<receiver android:name=".listener.SmsReceiver"> 
<intent-filter android:priority="100"> 
    <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
    </intent-filter> 
</receiver> 

ho seguito il tutorial su MobiForge (http://mobiforge.com/developing/story/sms-messaging-android), così come le domande qui:

How to block an incoming message in android?

Android – Listen For Incoming SMS Messages

Qualcuno può punto io nella giusta direzione qui? Lo apprezzerei.

+0

possibile duplicato di [Come bloccare un messaggio in arrivo in Android?] (Http://stackoverflow.com/questions/9378431/how-to-block-an-incoming-message-in-android) – t0mm13b

+0

I have passato attraverso le risposte di quella domanda e non ha trovato nulla di utile. – localhost

+0

Ho provato delle variazioni nel mio ricevitore manifest come ".SmsReceiver" e ".listener.SmsReceiver". Il mio nome file è "SmsReceiver.java" – localhost

risposta

10

Ecco cosa utilizzo per bloccare i testi in arrivo. Ecco come ho risposto alla mia domanda.


SmsReceiver.java

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.telephony.SmsMessage; 
import android.widget.Toast; 

public class BroadCastReceiver extends BroadcastReceiver 
{ 
/** Called when the activity is first created. */ 
private static final String ACTION = "android.provider.Telephony.SEND_SMS"; 
public static int MSG_TPE=0; 
public void onReceive(Context context, Intent intent) 
{ 
    String MSG_TYPE=intent.getAction(); 
     if(MSG_TYPE.equals("android.provider.Telephony.SMS_RECEIVED")) 
    { 
//   Toast toast = Toast.makeText(context,"SMS Received: "+MSG_TYPE , Toast.LENGTH_LONG); 
//   toast.show(); 

    Bundle bundle = intent.getExtras(); 
    Object messages[] = (Object[]) bundle.get("pdus"); 
    SmsMessage smsMessage[] = new SmsMessage[messages.length]; 
    for (int n = 0; n < messages.length; n++) 
    { 
     smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]); 
    } 

    // show first message 
    Toast toast = Toast.makeText(context,"BLOCKED Received SMS: " + smsMessage[0].getMessageBody(), Toast.LENGTH_LONG); 
    toast.show(); 
     abortBroadcast(); 
     for(int i=0;i<8;i++) 
     { 
      System.out.println("Blocking SMS **********************"); 
     } 

    } 
    else if(MSG_TYPE.equals("android.provider.Telephony.SEND_SMS")) 
    { 
     Toast toast = Toast.makeText(context,"SMS SENT: "+MSG_TYPE , Toast.LENGTH_LONG); 
     toast.show(); 
     abortBroadcast(); 
     for(int i=0;i<8;i++) 
     { 
      System.out.println("Blocking SMS **********************"); 
     } 

    } 
    else 
    { 

     Toast toast = Toast.makeText(context,"SIN ELSE: "+MSG_TYPE , Toast.LENGTH_LONG); 
     toast.show(); 
     abortBroadcast(); 
     for(int i=0;i<8;i++) 
     { 
      System.out.println("Blocking SMS **********************"); 
     } 

    } 

} 

} 

AndroidManifest.xml

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

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

<supports-screens 
android:largeScreens="true" 
android:normalScreens="true" 
android:smallScreens="true" 
android:resizeable="true" 
android:anyDensity="true" /> 

<uses-feature android:name="android.hardware.telephony" /> 
<uses-permission android:name="android.permission.READ_SMS" /> 
<uses-permission android:name="android.permission.WRITE_SMS" /> 
<uses-permission android:name="android.permission.SEND_SMS" /> 
<uses-permission android:name="android.permission.RECEIVE_SMS" /> 
<uses-permission android:name="android.permission.RECEIVE_MMS" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:name=".APPACTIVITYHERE" 
     android:label="@string/app_name" 
     android:configChanges="orientation|keyboardHidden" > 


    <service android:name=".MyService" android:enabled="true"/> 
    <receiver android:name="SmsReceiver"> 
     <intent-filter android:priority="2147483647"> 
     <action android:name="android.provider.Telephony.SMS_SENT"/> 
     </intent-filter> 
    </receiver> 

    <service android:name=".MyServiceSentReceived" android:enabled="true"/> 
     <receiver android:name="SmsReceiver"> 
     <intent-filter android:priority="2147483645"> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED"/> 
     </intent-filter> 
     </receiver> 

</application> 

La cosa principale da togliere il manifesto è il blocco di servizi, blocco ricevente e le autorizzazioni.

+0

@PeterMerrill .. grazie per aver condiviso questo !! – swiftBoy

+0

Non è un problema! Spero che aiuti chiunque ne abbia bisogno. – localhost

+1

Ciao Peter, ricevere parte del tuo codice funziona ma l'invio di sms non funziona, voglio dire che viene consegnato al destinatario, mentre voglio bloccare quel sms quando il servizio è in esecuzione. Puoi per favore indicare cosa sta andando storto? –

Problemi correlati