내 Android 앱에서 알림을 만들고 있지만 사용자가 다른 모든 간단한 알림처럼 왼쪽이나 오른쪽으로 스 와이프하면 알림 표시 줄에서 알림이 지워지 길 원합니다. 내 일을 시도했지만 작동하지 않습니다. 이 내 알림 코드알림을 스 와이프하여 닫을 수 없습니다.
private void showNotificationPause() {
// Using RemoteViews to bind custom layouts into Notification
RemoteViews views = new RemoteViews(getPackageName(),
R.layout.status_bar_old);
RemoteViews bigViews = new RemoteViews(getPackageName(),
R.layout.status_bar_expanded);
// showing default album image
views.setViewVisibility(R.id.status_bar_icon, View.GONE);
views.setViewVisibility(R.id.status_bar_album_art, View.VISIBLE);
bigViews.setImageViewBitmap(R.id.status_bar_album_art,
Constants.getDefaultAlbumArt(this));
Intent notificationIntent = new Intent(this, MusicActivity.class);
notificationIntent.setAction(Constants.ACTION.MAIN_ACTION);
// notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
// | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
notificationIntent, 0);
Intent previousIntent = new Intent(this, NotificationService.class);
previousIntent.setAction(Constants.ACTION.PREV_ACTION);
PendingIntent ppreviousIntent = PendingIntent.getService(this, 0,
previousIntent, 0);
Intent playIntent = new Intent(this, NotificationService.class);
playIntent.setAction(Constants.ACTION.PLAY_ACTION);
PendingIntent pplayIntent = PendingIntent.getService(this, 0,
playIntent, 0);
Intent nextIntent = new Intent(this, NotificationService.class);
nextIntent.setAction(Constants.ACTION.NEXT_ACTION);
PendingIntent pnextIntent = PendingIntent.getService(this, 0,
nextIntent, 0);
Intent closeIntent = new Intent(this, NotificationService.class);
closeIntent.setAction(Constants.ACTION.STOPFOREGROUND_ACTION);
PendingIntent pcloseIntent = PendingIntent.getService(this, 0,
closeIntent, 0);
views.setOnClickPendingIntent(R.id.status_bar_play, pplayIntent);
bigViews.setOnClickPendingIntent(R.id.status_bar_play, pplayIntent);
views.setOnClickPendingIntent(R.id.status_bar_next, pnextIntent);
bigViews.setOnClickPendingIntent(R.id.status_bar_next, pnextIntent);
views.setOnClickPendingIntent(R.id.status_bar_prev, ppreviousIntent);
bigViews.setOnClickPendingIntent(R.id.status_bar_prev, ppreviousIntent);
views.setOnClickPendingIntent(R.id.status_bar_collapse, pcloseIntent);
bigViews.setOnClickPendingIntent(R.id.status_bar_collapse, pcloseIntent);
views.setImageViewResource(R.id.status_bar_play,
R.drawable.play);
bigViews.setImageViewResource(R.id.status_bar_play,
R.drawable.play);
views.setTextViewText(R.id.status_bar_track_name, song_name.get(pos));
bigViews.setTextViewText(R.id.status_bar_track_name, song_name.get(pos));
views.setTextViewText(R.id.status_bar_artist_name, singer.get(pos));
bigViews.setTextViewText(R.id.status_bar_artist_name, singer.get(pos));
bigViews.setTextViewText(R.id.status_bar_album_name, "");
status = new NotificationCompat.Builder(this)
.setAutoCancel(true)
.setOngoing(false)
.setContentIntent(PendingIntent.getActivity(getApplicationContext(),
Constants.NOTIFICATION_ID.FOREGROUND_SERVICE,
notificationIntent, 0))
.build();
status.flags = Notification.FLAG_AUTO_CANCEL;
// status = new Notification.Builder(this)
// .setAutoCancel(true)
// .setOngoing(false)
// .setContentIntent(PendingIntent.getActivity(getApplicationContext(), Constants.NOTIFICATION_ID.FOREGROUND_SERVICE, new Intent(), 0))
// .build();
status.contentView = views;
status.bigContentView = bigViews;
// status.flags = Notification.FLAG_AUTO_CANCEL;
// status.flags = Notification.FLAG_LOCAL_ONLY;
// status.flags = Notification.F;
status.icon = R.drawable.status;
status.contentIntent = pendingIntent;
Uri uri = Uri.parse(mySongs.get(pos));
NotificationTarget notificationTarget = new NotificationTarget(getApplicationContext(),
bigViews,
R.id.status_bar_album_art,
status,
101
);
NotificationTarget notificationTarget_sm = new NotificationTarget(getApplicationContext(),
views,
R.id.status_bar_album_art,
status,
101);
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
try {
mmr.setDataSource(getApplicationContext(), Uri.parse(URLDecoder.decode(uri.toString())));
if (mmr.getEmbeddedPicture() != null) {
Glide
.with(getApplicationContext())
.load(mmr.getEmbeddedPicture())
.asBitmap()
.placeholder(R.drawable.logo2)
.into(notificationTarget_sm);
Glide
.with(getApplicationContext())
.load(mmr.getEmbeddedPicture())
.asBitmap()
.error(R.drawable.logo2)
.placeholder(R.drawable.logo2)
.into(notificationTarget);
}
}catch (Exception e){
}
NotificationManager notificationManager= (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(Constants.NOTIFICATION_ID.FOREGROUND_SERVICE, status);
// status.notify();
// startForeground(Constants.NOTIFICATION_ID.FOREGROUND_SERVICE, status);
}
이다 나는 알림에 대해 잘 모른다. 아무도 무슨 일이 일어 났는지 생각하고 있니?
'startForeground'를 사용하지 않으시겠습니까? 깨끗하게 시도하고 빌드하십시오. –
어떤 장치를 실행하고 있습니까? – nhoxbypass
@nhoxbypass Android N –