如何在没有点击通知的情况下显示活动

如何在没有点击通知的情况下显示活动

问题描述:

我想要在通知发出后显示activity而不点击通知Activity必须打开。我正在使用FCM进行通知发送。如何在没有点击通知的情况下显示活动

如何在不点击通知的情况下打开Activity

我使用这一点,但它不会打开活动:

public class MyFirebaseMessagingService extends FirebaseMessagingService { 

private static final String TAG = "MyFirebaseMsgService"; 
String messageContent = ""; 

@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 

    // TODO(developer): Handle FCM messages here. 
    messageContent = remoteMessage.getData().get("message"); 
    showNotification(remoteMessage.getData().get("message")); 
    postToastMessage(remoteMessage.getData().get("message")); 
    Log.d(TAG, "From: " + remoteMessage.getFrom()); 


} 

public void postToastMessage(final String message) { 
    Handler handler = new Handler(Looper.getMainLooper()); 

    handler.post(new Runnable() { 

     @Override 
     public void run() { 
      Toast.makeText(getApplicationContext(), message +" received", Toast.LENGTH_LONG).show(); 

      Intent newIntent = new Intent(MyFirebaseMessagingService.this, CallActivity.class); 
      newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(newIntent); 

     } 
    }); 
} 

private void showNotification(String message) { 

    Intent i = new Intent(this, CallActivity.class); 
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    PendingIntent pendingIntent = PendingIntent.getActivity(this,0,i,PendingIntent.FLAG_UPDATE_CURRENT); 


    NotificationCompat.Builder builder = (NotificationCompat.Builder) new NotificationCompat.Builder(this) 
      .setAutoCancel(true) 
      .setContentTitle(" Test") 
      .setContentText(message) 
      .setSmallIcon(R.drawable.ic_launcher) 
      .setContentIntent(pendingIntent); 

    NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 

    manager.notify(0,builder.build()); 
} 
} 

我收到此错误

FA: Discarding data. Failed to send event to service 
+0

而且你要接受'onTokenRefresh()'什么样的通知? –

+0

onTokenRefresh()如果你知道任何其他请告诉我,它仅由firebase给出 – Lassie

+0

。我将更改 – Lassie

请在你的代码延伸AppComatActivity和所有其他活动延伸BaseActivity基地活动,在节目通知内广播你的意图与新的活动,并在基地活动接收器,在该接收器内,你可以打开你的活动

更多象我可以显示如何为这个代码,

感谢

试试这个, 可能是有帮助的你,

添加在onMessageReceived()这段代码方法,

在NotificationActivity.class

if (getIntent().getBooleanExtra("isNotification", false)) { 
     message = getIntent().getStringExtra("message"); 
     txt_message.setText(message); 
    } 

我简单的GET消息3210

添加此,

@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 


    Log.e(TAG, "From: " + remoteMessage.getFrom()); 
    Log.e(TAG, "onMessage receiveddd: " + remoteMessage.getData()); 
    // Log.e(TAG, "onMessage notification: " + remoteMessage.getNotification().getBody()); 

    // Check if message contains a data payload. 
    if (remoteMessage.getData().size() > 0) { 
     Log.e("notification background", String.valueOf(remoteMessage.getData())); 
     Log.d(TAG, "Message data payload: " + remoteMessage.getData()); 

     Map<String, String> data = remoteMessage.getData(); 
     String deviceID = data.get("DeviceID"); 
     String message = data.get("Message"); 



     Log.e("value11111111", deviceID); 
     Log.e("value222222222", message); 


     Intent intent = new Intent(MyFirebaseMessagingService.this, NotificationActivity.class); 
     intent.putExtra("isNotification", true); 
     // intent.putExtra("title", value1); 
     intent.putExtra("message", message); 
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 

     // sendNotification("message received"); 

    } 
} 

比邮差, 发送该请求

{ 
"data":{ 
"DeviceID":"",// pass here your DeviceID 
"Message":"hiiii" // pass here your message 
}, 
"to":""// pass here ypur tocken 
    } 
+0

我添加了但登录该messageReceiver也没有显示.......... – Lassie

+0

通知显示但不显示活动...... – Lassie

+0

是onMessageReceived()方法调用吗?把日志放在onMessageReceived(),Log.d(“onMessage notification:”,remoteMessage.getNotification()。getBody()); –