如何在应用程序未在后台运行时使用通知打开任何活动?

时间:2018-04-09 20:27:59

标签: android firebase firebase-cloud-messaging

这是我的Firbase服务代码我只是想在应用程序关闭或不在后台运行时打开另一个Acivity我做了一切但它不会工作请帮助

private void createNotification(String messageBody, String title, RemoteMessage message)
{
    Intent intent = new Intent(this,NotificationScreen.class);
    intent.putExtra("type",message.getData().get("json"));
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    PendingIntent resultIntent = PendingIntent.getActivity( this ,0,intent,PendingIntent.FLAG_ONE_SHOT);
    Uri notificationSoundURI = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder mNotificationBuilder = new NotificationCompat.Builder( this)
            .setContentTitle(title)
            .setLargeIcon(BitmapFactory.decodeResource(this.getResources(),R.drawable.icon))
            .setContentText(messageBody)
            .setAutoCancel(true)
            .setSound(notificationSoundURI)
            .setContentIntent(resultIntent);
    mNotificationBuilder.setSmallIcon(getNotificationIcon(mNotificationBuilder));
    //Log.i("data",map.values().toString());
    NotificationManager notificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(0, mNotificationBuilder.build());
}
private int getNotificationIcon(NotificationCompat.Builder notificationBuilder) {

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        int color = 0x008000;
        notificationBuilder.setColor(color);
        return R.drawable.icon;

    }
    return R.drawable.icon;
}

已经应用了xml代码

<activity android:name=".NotificationScreen"
            >
            <intent-filter>
                <action android:name="NotificationScreen" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

请帮助无法理解..

1 个答案:

答案 0 :(得分:0)

对于Android,您只需将click_action有效内容中notification参数的值设置为等于您要打开的相应活动的intent过滤器即可。正如文档中所提到的(强调我的):

  

与用户点击通知相关联的操作。

     

如果指定,当用户点击通知时会启动具有匹配意图过滤器的活动

例如,你有这个有效载荷:

{
  "to": <TOKEN>,
  "notification": {
    ...
    "click_action" : "OPEN_ME"
    ...
  }
}

然后你的清单中有一个具有相应意图过滤器名称的活动(类似于你的帖子):

   <activity android:name=".NotificationScreen">
        <intent-filter>
            <action android:name="OPEN_ME" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

它应该打开那个特定的活动。