Come bloccare un messaggio in arrivo in android?

Sto cercando di sviluppare un'applicazione in android che blocca un sms in arrivo ..i ho impostato la priorità ma non bloccando i messaggi in arrivo..i ho usato questo.abortBroadcast () anche senza risultato..help me out guys

import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.gsm.SmsMessage; import android.widget.Toast; @SuppressWarnings("deprecation") public class SmsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { this.abortBroadcast(); Bundle bundle = intent.getExtras(); SmsMessage[] msgs = null; String str = ""; 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]); str += "SMS from " + msgs[i].getOriginatingAddress(); str += " :"; str += msgs[i].getMessageBody().toString(); str += "\n"; } } } } 

e il file manifesto è simile

  • Voglio cambiare il volume di ringertonevolume
  • Imansible risolvere: com.google.firebase: firebase-auth: 9.0.0
  • Come limitare i dati fornitori di contenuti tra le applicazioni
  • API Google Maps API v2: come fare i marcatori cliccabili?
  • Imansible risolvere il metodo 'getSupportFragmentManager ()' all'interno del frammento
  • Utilizzo ottimale di BitmapFactory.Options.inSampleSize per la velocità
  •  <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="BVB.EDU" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="7" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".SMS" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <receiver android:name=".SMSReceiver"> <intent-filter android:priority="99999"> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> <uses-permission android:name="android.permission.SEND_SMS"> </uses-permission> <uses-permission android:name="android.permission.RECEIVE_SMS"> </uses-permission> </manifest> 

    5 Solutions collect form web for “Come bloccare un messaggio in arrivo in android?”

    Il problema è nel tuo manifesto il tuo <application> chiusura <application> prima del tuo ricevitore, ma non dovresti fare che dovrai chiudere il tag dell'applicazione dopo il tuo ricevitore.

    Il tuo nome di class è SmsReceiver e in manifesto dichiarato come SMSReceiver, in modo da non ricevere la trasmissione affatto per il tuo ricevitore.

    L'uso deve cambiare il nome di class in un manifesto come sotto

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

    E nel ricevitore è meglio controllare l'object di intento per avere il messaggio o no e quindi è ansible interromperlo.

    Ma fai attenzione che aborti tutti i messaggi. Se si desidera abortare i messaggi a seconda di una determinata string si può fare qualche manipolazione sul messaggio di ciò che hai e quindi è ansible interromperlo.

    Se si desidera abortare tutti i messaggi è ansible call direttamente abortBroadcast () prima di eseguire qualsiasi manipolazione su quel messaggio.

     Bundle extras = intent.getExtras(); if ( extras != null ) { // do you manipulation on String then if you can abort. if(somecondition){ abortBroadcast(); } } 

    Ecco il mio manifesto che funziona bene, una volta confrontato con il tuo codice

     <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mypackage" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.RECEIVE_SMS"/> <uses-permission android:name="android.permission.WRITE_SMS"/> <uses-permission android:name="android.permission.READ_SMS"/> <application android:icon="@drawable/icon" android:enabled="true" android:label="@string/app_name"> <service android:name="com.mypackage.service.MyService" android:exported="true"> </service> <receiver android:name="com.mypackage.receiver.MyReceiver"> <intent-filter android:priority="100"><action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> </application> </manifest> 

    e il codice java

     public void onReceive( Context context, Intent intent ) { if(intent != null){ String action = intent.getAction(); if(action.equals("android.provider.Telephony.SMS_RECEIVED")) { Bundle extras = intent.getExtras(); if ( extras != null ){ //read sms } } } } 

    Ecco cosa uso per bloccare i testi in arrivo.


    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 dal manifesto è il block di servizio, il block del ricevitore e le autorizzazioni.

    Aggiungi abortBroadcast(); nel block if(bundle!=null){} . che dovrebbe smettere di andare ad altre applicazioni. E ho notato che il tuo ricevitore Broadcast è il nome di SmsReceiver , ma in Manifest, l'hai dato ".SMSReceiver" (caso-sensibile).

    @sankar

     <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="BVB.EDU" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="7" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".SMS" 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=".SmsReceiver"> <intent-filter android:priority="99999"> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> </application> <uses-permission android:name="android.permission.SEND_SMS"> </uses-permission> <uses-permission android:name="android.permission.RECEIVE_SMS"> </uses-permission> </manifest> 

    A causa della politica di sicurezza di Android 4.4 e fino a bloccare i messaggi SMS in arrivo, è necessario fornire all'applicazione le autorizzazioni di "Applicazione SMS predefinita"

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.