从通知中打开应用程序:“应用程序正在后台运行”

huangapple go评论92阅读模式
英文:

Open app from notification “App is running in the background”

问题

以下是您要求的翻译内容:

我需要在点击“应用在后台运行”通知后使我的应用程序打开,但当我点击它时会打开“应用信息”,我该如何避免这种情况并打开应用程序本身。

这是我用来显示此通知的代码:

    Intent notificationIntent = new Intent(this, MainActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
    NotificationChannel channel = new NotificationChannel("Player", "Sync Service", NotificationManager.IMPORTANCE_HIGH);
    channel.setDescription("Service Name");
    NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.createNotificationChannel(channel);

    Notification.Builder builder = new Notification.Builder(this, "Player")                
          .setContentTitle("Music Player")
          .setContentText("My Music")
          .setAutoCancel(true)
          .setContentIntent(pendingIntent)
          .setOngoing(true);

    Notification notification = builder.build();
    startForeground(1, notification);

注意:此应用程序确实使用了后台服务,我不想隐藏此通知。

英文:

I need to make my app open after clicking on the notification “App is running in the background”, but when I clicked it open the App Infos, how can I avoid this and open the app itself.

从通知中打开应用程序:“应用程序正在后台运行”

Here is the code that I using to show this notification:

    Intent notificationIntent = new Intent(this, MainActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
    NotificationChannel channel = new NotificationChannel("Player", "Sync Service", NotificationManager.IMPORTANCE_HIGH);
    channel.setDescription("Service Name");
    NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.createNotificationChannel(channel);

    Notification.Builder builder = new Notification.Builder(this, "Player")                
          .setContentTitle("Music Player")
          .setContentText("My Music")
          .setAutoCancel(true)
          .setContentIntent(pendingIntent)
          .setOngoing(true);

    Notification notification = builder.build();
    startForeground(1, notification);

Obs. this app really uses a background service and I don't want to hide this notification.

答案1

得分: 3

package developer.eyosiyas.NileSat.Habesha.service;

import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;

import androidx.annotation.Nullable;
import androidx.core.app.NotificationCompat;

import developer.eyosiyas.NileSat.Habesha.R;
import developer.eyosiyas.NileSat.Habesha.View.MainActivity;

public class ServiceExample extends Service {

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return START_STICKY;
    }

    @Override
    public void onCreate() {
        super.onCreate();

        Intent notificationIntent = new Intent(this, MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
        NotificationManager notificationManager;
        notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        NotificationChannel channel = new NotificationChannel("Player", "Sync Service", NotificationManager.IMPORTANCE_HIGH);
        channel.enableLights(true);
        channel.enableVibration(true);
        channel.setLightColor(R.color.colorPrimary);
        channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
        channel.setDescription("Service Name");
        notificationManager.createNotificationChannel(channel);

        NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "Player")
                .setContentTitle("Music Player")
                .setContentText("My Music")
                .setAutoCancel(false)
                .setContentIntent(pendingIntent)
                .setOngoing(true);

        Notification notification = builder.build();
        notificationManager.notify(1, notification);
        startForeground(1, notification);
    }
}
英文:

Try this one.

package developer.eyosiyas.NileSat.Habesha.service;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import androidx.annotation.Nullable;
import androidx.core.app.NotificationCompat;
import developer.eyosiyas.NileSat.Habesha.R;
import developer.eyosiyas.NileSat.Habesha.View.MainActivity;
public class ServiceExample extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
@Override
public void onCreate() {
super.onCreate();
Intent notificationIntent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
NotificationManager notificationManager;
notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
NotificationChannel channel = new NotificationChannel("Player", "Sync Service", NotificationManager.IMPORTANCE_HIGH);
channel.enableLights(true);
channel.enableVibration(true);
channel.setLightColor(R.color.colorPrimary);
channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
channel.setDescription("Service Name");
notificationManager.createNotificationChannel(channel);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "Player")
.setContentTitle("Music Player")
.setContentText("My Music")
.setAutoCancel(false)
.setContentIntent(pendingIntent)
.setOngoing(true);
Notification notification = builder.build();
notificationManager.notify(1, notification);
startForeground(1, notification);
}
}

huangapple
  • 本文由 发表于 2020年10月7日 09:42:12
  • 转载请务必保留本文链接:https://go.coder-hub.com/64236026.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定