Galera boa tarde !
Desenvolvi uma notificação em Android, com pesquisas da internet e com o livro do Ricardo Lecheta, porem tanto exemplos da internet quanto exemplos do livro eu tive o mesmo problema, toda vez que eu envio uma segunda notificação a partir do primeiro envio, sempre esta apresentando a mensagem do primeiro envio na Activity e não mais a segunda, na notificação fica certo, porem na Activity esta sempre apresentando a primeira mensagem.
Na criação da notificação eu aponto uma Activity que informo que será apresentado a mensagem, nesta activity eu adiciono no putExtras a mensagem que será passa a tela, algo me diz que se trata da chave (key) usada para adicionar o parâmetro, segue meu código.
Se vocês poderem me ajudar agradeço muito !
Abraços
EnviarMensagemParaDevice.java
//Classe que envia a mensagem ao aparelho
public class EnviarMensagemParaDevice {
private static final String DEVICE_REGISTRATION_ID = "ID DO CELULAR";
private static final String API_KEY = "KEY DA APP";
public static void main(String[] args) throws IOException {
// TODO code application logic here
Sender sender = new Sender(API_KEY);
Message message = new Message.Builder().addData("title", "TESTE NOTIFICATION").addData("author", "TESTE NOME AUTOR").addData("message", "NOVA MENSAGEM").build();
sender.send(message, DEVICE_REGISTRATION_ID, 5);
System.out.println("Mensagem Enviada: "+ message.getData().get("msg"));
System.exit(0);
}
NotificationCustomUtil.java
public class NotificationCustomUtil {
private static NotificationManager mNotificationManager;
public static void sendNotification(Context context, String title, String author, String message) {
mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("msg", message);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, 0);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
.setSmallIcon(R.mipmap.ic_launcher)
.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
.setContentTitle(title)
.setContentText(author+": "+message);
mBuilder.setContentIntent(contentIntent);
Notification notification = mBuilder.build();
notification.flags |= Notification.FLAG_AUTO_CANCEL;
mNotificationManager.notify(AndroidSystemUtil.randInt(), notification);
}
}
GcmIntentService.java
public class GcmIntentService extends IntentService {
public static final String TAG = "Script";
public GcmIntentService(){
super(Constants.PROJECT_NUMBER);
}
@Override
protected void onHandleIntent(Intent intent) {
Bundle extras = intent.getExtras();
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(GcmIntentService.this);
String title, author, message, messageType = gcm.getMessageType(intent);
if(extras != null){
if(GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)){
Log.i(TAG, "Error: "+extras.toString());
}
else if(GoogleCloudMessaging.MESSAGE_TYPE_DELETED.equals(messageType)){
Log.i(TAG, "Deleted: "+extras.toString());
}
else if(GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType)){
title = extras.getString("title");
author = extras.getString("author");
message = extras.getString("message");
NotificationCustomUtil.sendNotification(GcmIntentService.this, title, author, message);
}
}
GcmBroadcastReceiver.completeWakefulIntent(intent);
}
MainActivity.java
public class MainActivity extends Activity {
public static final int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
public static final String TAG = "Script";
private String SENDER_ID = "";
private String regId;
private GoogleCloudMessaging gcm;
private TextView tvRegistrationId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvRegistrationId = (TextView) findViewById(R.id.tvRegistrationId);
if(checkPlayServices()){
gcm = GoogleCloudMessaging.getInstance(MainActivity.this);
regId = AndroidSystemUtil.getRegistrationId(MainActivity.this);
if(regId.trim().length() == 0){
registerIdInBackground();
}
}
String msg = getIntent().getStringExtra("msg");
if(msg != null) {
exibirMensagem(msg);
}
}
private void exibirMensagem(final String msg) {
TextView text = (TextView) findViewById(R.id.msg);
text.append(msg + "\n------------------------\n");
Log.i(TAG, msg);
}
@Override
public void onResume(){
super.onResume();
checkPlayServices();
}
// UTIL
public boolean checkPlayServices(){
int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(MainActivity.this);
if(resultCode != ConnectionResult.SUCCESS){
if(GooglePlayServicesUtil.isUserRecoverableError(resultCode)){
GooglePlayServicesUtil.getErrorDialog(resultCode, MainActivity.this, PLAY_SERVICES_RESOLUTION_REQUEST);
}
else{
Toast.makeText(MainActivity.this, "PlayServices sem suporte", Toast.LENGTH_SHORT).show();
finish();
}
return(false);
}
return(true);
}
public void registerIdInBackground(){
new AsyncTask(){
@Override
protected Object doInBackground(Object... params) {
String msg = "";
try{
if(gcm == null){
gcm = GoogleCloudMessaging.getInstance(MainActivity.this);
}
regId = gcm.register(Constants.PROJECT_NUMBER);
msg = "Register Id MENSAGEM01: "+regId;
Log.i(TAG, msg);
String feedback = "";//HttpConnectionUtil.sendRegistrationIdToBackend(regId);
Log.i(TAG, feedback);
AndroidSystemUtil.storeRegistrationId(MainActivity.this, regId);
}
catch(IOException e){
Log.i(TAG, e.getMessage());
}
return msg;
}
@Override
public void onPostExecute(Object msg){
tvRegistrationId.setText((String)msg);
}
}.execute(null, null, null);
}
}