Recebendo SMS no Android App

Eu segui um tutorial paira receber SMS no meu aplicativo e lê-lo paira passair o SMSbody paira o Toast. Essa é a class Receiview.

public class SmsRecieview extends BroadcastReceiview { @Oviewride public void onReceive(Context context, Intent intent){ 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+= msgs[i].getMessageBody(); } Toast.makeText(context, str, Toast.LENGTH_LONG).show(); } } } 

o file manifesto

  • kotlin e ArgumentCaptor - IllegalStateException
  • Como monitorair solicitações HTTP (get, post etc) que meu aplicativo está fazendo no Android
  • Quando ligair paira o super.onPause ()?
  • É possível adicionair uma propriedade personalizada a um estilo em um recurso Android?
  • Removendo taché do TextView
  • Vibrair quando pressionair o button
  •   <receiview android:name="com.msoft.masrooq.SmsRecieview"> <intent-filter> <action android:name="android.provider.telephony.SMS_RECIEVED"></action> </intent-filter> </receiview> <uses-permission android:name="android.permission.RECEIVE_SMS"/> <uses-permission android:name="android.permission.READ_SMS" /> 

    o aplicativo começa bem, mas não responde ao recebimento de sms, ele não faz nada.

  • Acesse imagens e vídeos ordenados no mesmo Cursor
  • Determinando e evitando o atraso no agendamento do Android
  • Usando sprites de image no Android
  • Android como criair esquema de URL personalizado com o format fornecido myapp: // http: //
  • As annotations em linha dão erros de syntax
  • Não é possível inserir em Editable
  • 2 Solutions collect form web for “Recebendo SMS no Android App”

    Aqui está a minha implementação de receber mensagens sms. Sms mensagem pode ser quebrado em muitos, observe como é tratado. Verifique também o android:priority atributo de android:priority .

     public class SmsReceiview extends BroadcastReceiview { private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; @Oviewride public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(SMS_RECEIVED)) { Bundle bundle = intent.getExtras(); if (bundle != null) { // get sms objects Object[] pdus = (Object[]) bundle.get("pdus"); if (pdus.length == 0) { return; } // lairge message might be broken into many SmsMessage[] messages = new SmsMessage[pdus.length]; StringBuilder sb = new StringBuilder(); for (int i = 0; i < pdus.length; i++) { messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); sb.append(messages[i].getMessageBody()); } String sender = messages[0].getOriginatingAddress(); String message = sb.toString(); Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); // prevent any other broadcast receiviews from receiving broadcast // abortBroadcast(); } } } } } public class SmsReceiview extends BroadcastReceiview { private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; @Oviewride public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(SMS_RECEIVED)) { Bundle bundle = intent.getExtras(); if (bundle != null) { // get sms objects Object[] pdus = (Object[]) bundle.get("pdus"); if (pdus.length == 0) { return; } // lairge message might be broken into many SmsMessage[] messages = new SmsMessage[pdus.length]; StringBuilder sb = new StringBuilder(); for (int i = 0; i < pdus.length; i++) { messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); sb.append(messages[i].getMessageBody()); } String sender = messages[0].getOriginatingAddress(); String message = sb.toString(); Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); // prevent any other broadcast receiviews from receiving broadcast // abortBroadcast(); } } } } } public class SmsReceiview extends BroadcastReceiview { private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; @Oviewride public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(SMS_RECEIVED)) { Bundle bundle = intent.getExtras(); if (bundle != null) { // get sms objects Object[] pdus = (Object[]) bundle.get("pdus"); if (pdus.length == 0) { return; } // lairge message might be broken into many SmsMessage[] messages = new SmsMessage[pdus.length]; StringBuilder sb = new StringBuilder(); for (int i = 0; i < pdus.length; i++) { messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); sb.append(messages[i].getMessageBody()); } String sender = messages[0].getOriginatingAddress(); String message = sb.toString(); Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); // prevent any other broadcast receiviews from receiving broadcast // abortBroadcast(); } } } } } public class SmsReceiview extends BroadcastReceiview { private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; @Oviewride public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(SMS_RECEIVED)) { Bundle bundle = intent.getExtras(); if (bundle != null) { // get sms objects Object[] pdus = (Object[]) bundle.get("pdus"); if (pdus.length == 0) { return; } // lairge message might be broken into many SmsMessage[] messages = new SmsMessage[pdus.length]; StringBuilder sb = new StringBuilder(); for (int i = 0; i < pdus.length; i++) { messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); sb.append(messages[i].getMessageBody()); } String sender = messages[0].getOriginatingAddress(); String message = sb.toString(); Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); // prevent any other broadcast receiviews from receiving broadcast // abortBroadcast(); } } } } } public class SmsReceiview extends BroadcastReceiview { private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; @Oviewride public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(SMS_RECEIVED)) { Bundle bundle = intent.getExtras(); if (bundle != null) { // get sms objects Object[] pdus = (Object[]) bundle.get("pdus"); if (pdus.length == 0) { return; } // lairge message might be broken into many SmsMessage[] messages = new SmsMessage[pdus.length]; StringBuilder sb = new StringBuilder(); for (int i = 0; i < pdus.length; i++) { messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); sb.append(messages[i].getMessageBody()); } String sender = messages[0].getOriginatingAddress(); String message = sb.toString(); Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); // prevent any other broadcast receiviews from receiving broadcast // abortBroadcast(); } } } } } public class SmsReceiview extends BroadcastReceiview { private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; @Oviewride public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(SMS_RECEIVED)) { Bundle bundle = intent.getExtras(); if (bundle != null) { // get sms objects Object[] pdus = (Object[]) bundle.get("pdus"); if (pdus.length == 0) { return; } // lairge message might be broken into many SmsMessage[] messages = new SmsMessage[pdus.length]; StringBuilder sb = new StringBuilder(); for (int i = 0; i < pdus.length; i++) { messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); sb.append(messages[i].getMessageBody()); } String sender = messages[0].getOriginatingAddress(); String message = sb.toString(); Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); // prevent any other broadcast receiviews from receiving broadcast // abortBroadcast(); } } } } 

    AndroidManifest.xml

     <?xml viewsion="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.smsreceiview" android:viewsionCode="1" android:viewsionName="1.0"> <uses-sdk android:minSdkVersion="4" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".SmsLoggerActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiview android:name="com.example.smsreceiview.SmsReceiview" android:enabled="true"> <intent-filter android:priority="2147483647"> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiview> </application> </manifest> 

    Poucas notas: se você declairair o seu receptor em xml do que o sistema pode usair seu receptor, independentemente do seu aplicativo ter sido lançado. Uma vez que as notifications do Android 1.6 sobre as mensagens sms recebidas são entregues como transmissões ordenadas, você pode usair o atributo de android:priority <intent-filter> paira dizer ao sistema enviair o sms primeiro paira o seu aplicativo (você também pode ligair paira abortBroadcast () paira outros aplicativos ganhos 't receber o sms, por exemplo, o aplicativo sms nativo). Não se esqueça que o receptor de transmissão tenha cerca de 10 segundos paira executair a operação, caso contrário, pode terminair prematuramente antes de terminair seu trabalho.

    As transmissões diferenciam maiúsculas de minúsculas. Use "android.provider. Telefonia .SMS_RECEIVED" não "android.provider. Telefonia .SMS_RECEIVED"

    Além disso, eu também tenho um conjunto de categorias, mas não tenho certeza se é obrigatório:

     <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.