firebase工作正常,在状态栏上推送通知但我的挑战是点击通知时,我希望它带我到我的自定义活动而不是默认启动器,我该怎么办呢?
public class CustomActivity extends AppCompatActivity {private static final String TAG = "CustomActivity";@OverrIDeprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); TextVIEw mymessage = (TextVIEw) findVIEwByID(R.ID.mymessage); // If a notification message is tapped, any data accompanying the notification // message is available in the intent extras. In this sample the launcher // intent is fired when the notification is tapped, so any accompanying data would // be handled here. If you want a different intent fired, set the click_action // fIEld of the notification message to the desired intent. The launcher intent // is used when no click_action is specifIEd. // // Handle possible data accompanying notification message. // [START handle_data_extras] if (getIntent().getExtras() != null) { for (String key : getIntent().getExtras().keySet()) { String value = String.valueOf(getIntent().getExtras().get(key)); Log.d(TAG, "Key: " + key + " Value: " + value); // Toast.makeText(getApplicationContext() , value , Toast.LENGTH_SHORT).show(); } //Toast.makeText(getApplicationContext() , String.valueOf(getIntent().getExtras().get("message")) , Toast.LENGTH_SHORT).show(); } // [END handle_data_extras] button subscribebutton = (button) findVIEwByID(R.ID.subscribebutton); subscribebutton.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { // [START subscribe_topics] FirebaseMessaging.getInstance().subscribetotopic("news"); // [END subscribe_topics] // Log and toast String msg = getString(R.string.msg_subscribed); Log.d(TAG, msg); Toast.makeText(CustomActivity.this, msg, Toast.LENGTH_SHORT).show(); } }); button logTokenbutton = (button) findVIEwByID(R.ID.logTokenbutton); logTokenbutton.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { // Get token String token = FirebaseInstanceID.getInstance().getToken(); // Log and toast String msg = getString(R.string.msg_token_fmt, token); Log.d(TAG, msg); Toast.makeText(CustomActivity.this, msg, Toast.LENGTH_SHORT).show(); } });}
这是我想要在通知计时时打开的自定义活动.通知来自Firebase云消息传递.
public class MyFirebaseMessagingService extends FirebaseMessagingService {private static final String TAG = "MyFirebaseMsgService";/** * Called when message is received. * * @param remoteMessage Object representing the message received from Firebase Cloud Messaging. */// [START receive_message]@OverrIDepublic voID onMessageReceived(RemoteMessage remoteMessage) { // [START_EXCLUDE] // There are two types of messages data messages and notification messages. Data messages are handled // here in onMessageReceived whether the app is in the foreground or background. Data messages are the type // Traditionally used with GCM. Notification messages are only received here in onMessageReceived when the app // is in the foreground. When the app is in the background an automatically generated notification is displayed. // When the user taps on the notification they are returned to the app. Messages containing both notification // and data payloads are treated as notification messages. The Firebase console always sends notification // [END_EXCLUDE] // Todo(developer): Handle FCM messages here. Log.d(TAG, "From: " + remoteMessage.getFrom()); // Check if message contains a data payload. if (remoteMessage.getData().size() > 0) { Log.d(TAG, "Message data payload: " + remoteMessage.getData()); System.out.print("Message data payload :" + remoteMessage.getData()); } // Check if message contains a notification payload. if (remoteMessage.getNotification() != null) { Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getbody()); System.out.print("Message Notification Body :" + remoteMessage.getNotification().getbody()); } // Also if you intend on generating your own notifications as a result of a received FCM // message, here is where that should be initiated. See sendNotification method below.}// [END receive_message]/** * Create and show a simple notification containing the received FCM message. * * @param messageBody FCM message body received. */private voID sendNotification(String messageBody) { Intent intent = new Intent(this, CustomActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_top); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, PendingIntent.FLAG_ONE_SHOT); Uri defaultSoundUri= ringtoneManager.getDefaultUri(ringtoneManager.TYPE_NOTIFICATION); NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) .setSmallicon(R.drawable.ic_stat_ic_notification) .setContentTitle("FCM Message") .setContentText(messageBody) .setautoCancel(true) .setSound(defaultSoundUri) .setContentIntent(pendingIntent); notificationmanager notificationmanager = (notificationmanager) getSystemService(Context.NOTIFICATION_SERVICE); notificationmanager.notify(0 /* ID of notification */, notificationBuilder.build());}
}
这是从firebase收听通知的服务.
解决方法:
private voID showNotification(String msg) { //Creating a notification NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setSmallicon(R.drawable.ic_launcher); Intent intent = new Intent().setClassname("packagename", "packagename.YourActivityname"); // give any activity name which you want to open PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0); builder.setContentIntent(pendingIntent); builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher)); builder.setContentTitle("FireBase"); builder.setContentText(msg); notificationmanager notificationmanager = (notificationmanager) getSystemService(NOTIFICATION_SERVICE); notificationmanager.notify(1, builder.build());}
我希望它可以帮到你!
总结以上是内存溢出为你收集整理的安装程序单击以打开我的活动时安装android – firebase消息全部内容,希望文章能够帮你解决安装程序单击以打开我的活动时安装android – firebase消息所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)