【问题标题】:Can't launch specific Activity from notification using Firebase无法使用 Firebase 从通知中启动特定活动
【发布时间】:2017-06-02 12:23:12
【问题描述】:

我尝试从新用户添加到数据库时更新的通知启动活动(我正在使用 firebase 数据库)。

通知工作完美,但每当我尝试从通知启动 UserDashboardActivity 时。它不工作。

谁能帮帮我。

我的代码:

这里是Service里面的通知代码

public class NotificationService extends Service {
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        notifyMe(order.amount);
        return START_STICKY;
    }

    private void notifyMe(String amount){
    NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.add_order)
            .setContentTitle("New Order")
            .setContentText("Order amount: " + amount)
            .setAutoCancel(true);

    Intent notificationIntent = new Intent(this,UserDashboardActivity.class);
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    PendingIntent contentIntent = PendingIntent.getActivity(this,0,notificationIntent,PendingIntent.FLAG_UPDATE_CURRENT);
    builder.setContentIntent(contentIntent);

    NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
    manager.notify(0,builder.build());
    }
}

当 UserDoashboardActivity 停止时我正在启动服务

@Override
protected void onStop() {
    super.onStop();
    Intent intent = new Intent(UserDashboardActivity.this, NotificationService.class);
    startService(intent);
}

【问题讨论】:

  • 只是为了说清楚 - 如果您将 UserDashboardActivity 替换为任何其他活动,它可以工作吗?
  • 没错……
  • 另外我正在从 UserDashboardActivity 启动服务
  • 可能因为您将 UDActivity 的引用作为上下文发送而出现了一些问题或泄漏。在活动中,尝试发送应用上下文而不是活动。或者,在服务中放置一些其他活动,而不是 UDActivity,并在该 oder 活动中编辑 onStop() 方法以将服务作为 UDActivity 中的 onStop() 方法启动,然后查看发生了什么
  • 另外,如果你的服务在数据库发生变化时自动启动,为什么还要手动启动服务呢?这似乎写得不好。

标签: android android-activity android-service android-notifications


【解决方案1】:

在 notifyMe() 函数中试试这个代码...

  Intent intent = new Intent(this, YourActivityName.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
            PendingIntent.FLAG_ONE_SHOT);

【讨论】:

    猜你喜欢
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多