>

Fórum

Fórum da RL System, voltado para analistas, programadores etc. Tudo sobre linguagem de programação e desenvolvimento Full Stack: Banco de Dados, Android, C#, Java, .NET, PHP, Node, Javascript, TypeScript, Front, HTML e muito mais.



SMS Receiver - Aula 9


Olá.

Estou tentando testar as notificações de mensagens ensinada na aula 9.

Executei 2 emuladores, enviei a mensagem por um, recebi no outro e o Toast foi mostrado normalmente.

Mas, ao executar no meu celular, enviando mensagem de outro número, nada acontece.

Alguma idéia do que pode ser?



24 Respostas


olha no post envio de sms aki do forum...




André, no post de envio de sms que tem no fórum, pelo que eu entendi, é de como enviar sms do próprio celular para o próprio número.

O que eu estou tentando fazer é, enviando de outro número para o meu, fazer funcionar.




Ola Vinicius,

vc incluiu a permissao RECEIVE_SMS??




Olá, André.

Sim, inclui.

Segue meu projeto pra quem puder me ajudar:



https://dropbox.com/s/1tkuteqoanl0mjl/Vendas.zip




Vinicius

Você está colocando como o número?

Seu celular é de linha?

Se não, você possui créditos para SMS?




no meu celular funcionou legal a parte d msg....




Rafael,

Estou enviando, de outro celular, uma sms para o meu com a palavra "replicar". Eu recebo a SMS, aparece a notificação de mensagem recebida, mas a notificação de que o serviço está sendo replicado não aparece. Testando em 2 emuladores funciona. Meu celular é de linha, pós-pago. Mas isso não influencia muito, porque estou enviando de outro número e recebendo a sms normalmente.

André,

Como você fez o teste? A notificação da replicação apareceu?

Chegando em casa vou tentar instalar o apk em outro celular e testar.




ola vinicius.

eu instalei no meu celular e passei a msg de outro. apareceu a toast e a notificacao status replicacao e a msg : replicar... mas naum cadastrou no meu servidor...eu acho q é o xamp q naum ta configurado.. se tu souber como é q configura posta aki..... e a notificao de status fica aparecendo toda hora....




Olá André,

Deve ser algum problema no meu celular então. Em casa, a noite, vou testar em outro celular.

Eu estou usando o Wamp como servidor. Não teve mistérios com instalação e configuração. Na verdade, eu tive que alterar o arquivo de configuração para permitir acesso provindo de qualquer IP, pois por default, ele vem configurado para "deny all, menos localhost".

Já tentou usar esse Wamp?

Que erro vc tem no Xamp? Tenta pegar a URL de inserção no arquivo .php, colar direto no navegador passando os dados e ver o que acontece.

Obrigado por testar, já vou corrigir esse bug da notificação ficar aparecendo toda hora.




Vinicius, neste caso preciso ver seu código que recebe o SMS.






Ja testei em 3 celulares diferentes e não consigo fazer de jeito nenhum a notificação aparecer...E pelo emulador, deu certo. Já não sei mais o que pode ser :/




Vinicus,

Poste apenas a parte do Receiver, a classe toda, via código no fórum, por favor.





package au.com.vinnamaral.vendas;

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 ExemploBroadCastReceiver extends BroadcastReceiver{

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

if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){
Bundle bundle = intent.getExtras();

if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");

final SmsMessage[] messages = new SmsMessage[pdus.length];

for (int i = 0; i < pdus.length; i ) {
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}

if (messages.length > -1) {
if (messages[0].getMessageBody().equals("replicar")) {
Toast.makeText(context, "SMS Chegou e replicação será inicializada!", Toast.LENGTH_LONG).show();
Intent it = new Intent("vendas.iniciar_servico");
context.startService(it);
}
}
}
}
}

}





package au.com.vinnamaral.vendas;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;

public class ExportarVendasService extends Service implements Runnable {

int totalDB, totalReplicado;

public void onCreate() {
}

@Override
public IBinder onBind(Intent arg0) {
return null;
}

@Override
public void onStart(Intent intent, int startId) {
totalDB = (Integer) intent.getExtras().get("totalDB");
totalReplicado = (Integer) intent.getExtras().get("totalReplicado");
new Thread(ExportarVendasService.this).start();
}

@Override
public void run() {

NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

Notification nt = null;

if (totalDB == totalReplicado) {
nt = new Notification(R.drawable.ic_launcher, "Status Replicação", System.currentTimeMillis());

nt.flags |= Notification.FLAG_AUTO_CANCEL;

PendingIntent p = PendingIntent.getActivity(this, 0, new Intent(this.getApplicationContext(), MainActivity.class), 0);

nt.setLatestEventInfo(this, "Status Replicação", "A replicação foi feita com sucesso, total: " totalReplicado, p);
} else {
nt = new Notification(R.drawable.ic_launcher, "Status Replicação", System.currentTimeMillis());

nt.flags |= Notification.FLAG_AUTO_CANCEL;

PendingIntent p = PendingIntent.getActivity(this, 0, new Intent(this.getApplicationContext(), MainActivity.class), 0);

nt.setLatestEventInfo(this, "Status Replicação", "A replicação não foi feita com sucesso, total: " totalReplicado " de " totalDB, p);
}

nt.vibrate = new long[] { 100, 2000, 1000, 2000 };

notificationManager.notify((int) Math.round(Math.random()), nt);

stopService(new Intent("vendas.iniciar_servico"));
}

}





Opa

Faça Alguns testes:

1 - Mande de um emulador pra outro.
2 - Tire a verificação se é igual a replicar, e veja se funcione (isso no celular).

Outra coisa:

1 - Registrou ele no Manifest?
2 - Deu permissão?






Vinicius, o seu é o au.com.vinnamaral.vendas e ta junto com o que o Rafael ensinou, sera q naum é isso?? tem q excluir algum.. eu exclui o pacote au.com.vinnamaral.vendas ai eu instalei o q o rafael ensinou...




André, acredito que não seja o pacote, porque se fosse isso ele nem iria compilar. O da RL_System também não esta funcionando pra mim a parte da SMS.

Rafael,

1 - Mande de um emulador pra outro. - Ok, deu certo, pelo emulador funciona
2 - Tire a verificação se é igual a replicar, e veja se funcione (isso no celular). - Nao deu certo e nem entrou na função.

Outra coisa:

1 - Registrou ele no Manifest? - Sim
2 - Deu permissão? - Sim

Estranho que ele nem ta entrando na função onReceive da classe ExemploBroadCastReceiver. Coloquei uns Logs e nada de aparecer. Mas pelo emulador funciona.

Segue meu manifest

[XML]

package="au.com.vinnamaral.vendas"
android:versionCode="1"
android:versionName="1.0" >

android:minSdkVersion="8"
android:targetSdkVersion="8" />

android:name="au.com.vinnamaral.vendas.MAPS_RECEIVE"
android:protectionLevel="signature" />











android:glEsVersion="0x00020000"
android:required="true" />

android:allowBackup="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
android:name="au.com.vinnamaral.vendas.MainActivity"
android:label="@string/app_name" >










android:name="au.com.vinnamaral.vendas.ListarVendasActivity"
android:label="@string/title_activity_listar_vendas" >
















android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyBzB3wIjRGA2T4yO_bTdnusZupCsCmhpuM" />



[/XML]






ola vinicius,
esse codigo so pode naum ter gostado da tua cara. pq aki comigo ta funcionando.....




srrsrsrsrsrrsrr........ :-p




Vc envia uma sms "replicar" para seu numero e ele inicia a replicação?

Acho muito estranho funcionar para vc e no emulador!

O pior, eu tentei com 4 celulares diferentes e em todos não funcionou... :/

Acho que o problema é cmg mesmo kkkkkk





kkkkk, olha eu testei no galaxy samsung music ai eu peguei um outro celular pebinha, ai pegou q nem ta la em cima do teu topico.. a status da replicacao fica aparecendo toda hora, mas eu ainda naum testeii ainda se ta replicando no servidor pq eu naum configurei ele... mas o seu vc diz q nem aparece nada.. misterio... eu num sei o q é q ta acontecendo.....




A parte do servidor eu ja fiz funcionar. A única coisa que não funciona de jeito nenhum é o ExemploBroadCastReceiver :/




Vinicius,

Peço que teste em outro celular,

Pois realmente o código ta OK e como você disse no Emulador funciona.

Formata o celular. As vezes você instalou algum APP que ta pegando o BroadCast antes.




Estava com problema no envio e o meu foi (I ) do for(). ExemploBroadCastReceiver


for (int i = 0; i < pdus.length; i ) {
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}