Articles of android notifications

在点击通知操作上隐藏Foreground Service的通知

我有一个具有前端通知的前台服务的警报应用程序,该通知有两个操作,其中一个向服务发送意图并可以根据应用程序配置打开活动。 问题是,当我点击将意图发送到服务的操作时,通知不会隐藏。 当intent打开Activity时,似乎不会发生这种情况 我不想要没有通知的前台服务,我只是希望它在将意图发送到服务时将其隐藏回通知抽屉 这是代码: NotificationCompat.Builder(mAlarmApplication, CHANNEL_ID) .setSmallIcon(R.drawable.ic_notification_alarm) .setAutoCancel(false) .setOngoing(true) .setVibrate(LongArray(0)) .setContentTitle(“Title”) .setContentText(“Content”) .addAction(0, dismissActionText, dismissPendingIntent) .setCategory(NotificationCompat.CATEGORY_ALARM) .setPriority(NotificationCompat.PRIORITY_MAX) .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setContentIntent(alarmScreenPendingIntent) .setFullScreenIntent(alarmScreenPendingIntent, true) 以下是应用https://play.google.com/store/apps/details?id=com.garageapp.alarmchallenges的链接。 警报启动时出现问题,我当前的解决方案是更新旧的抬头通知,使用一个新的抬头通知,但是UX不是很好,因为在Android 8+上通知新通知会popup老化

我在特定时间安排本地通知,使用开关但在设定时间不触发

我正在使用一个开关,当打开时会触发警报并启动通知。 最初它工作正常并在设定的时间触发警报。 手动更改时间后,它开始工作奇怪的通知是在开关打开但不在指定的设定时间时立即触发。 这是交换机的代码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); aSwitch = (Switch) findViewById(R.id.switch1); prefs = PreferenceManager.getDefaultSharedPreferences(this); Boolean switchState = prefs.getBoolean(“locked”, false); if(switchState) { aSwitch.setChecked(true); } else { aSwitch.setChecked(false); } aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked) { prefs.edit().putBoolean(“locked”, true).apply(); NotificationEventReceiver.setupAlarm(getApplicationContext()); aSwitch.setChecked(true); } else { prefs.edit().putBoolean(“locked”, false).apply(); NotificationEventReceiver.cancelAlarm(getApplicationContext()); […]

在显示状态栏通知之前处理状态栏通知

我使用NotificationListenerService来处理设备通知: @Override public void onNotificationPosted(StatusBarNotification sbn) { Log.d(TAG,”onNotificationPosted posted – ID :” + sbn.getId() + “\t” + sbn.getNotification().tickerText + “\t” + sbn.getPackageName()); } 在设备上发布通知后调用onNotificationPosted()方法。 有没有办法在呈现之前捕获它? 我看到也可以使用AccessibilityManager实现阅读通知,但在popup通知后再次阅读。 有没有办法延迟设备通知popup窗口,直到某个时刻? 我知道我可以使用NotificationListenerService删除通知(在popup给用户之后)并保存并尝试稍后重新启动它。 但是我遇到了重新启动的问题,并且在状态栏通知已经显示之后再次发生这种情况。

Android – 正确更新通知进度条

我仍然是Android的新手,我正在努力改进我的通知进度条以使其更顺畅,而不是为我的Pebble点燃一百万次更新并以“正确的方式”进行。 此代码工作“正常”,就像我使用它时,通知绘制和进度条按预期完成。 当我将Pebble手表设置为接受我的应用程序通知时,这对我来说成了一个问题。 这导致每个上传的图像振动约50次,具体取决于上传速度的速度。 作为一个初学者,我认为我这样做是错的,并且有更好的方法来做我想做的事情。 我的通知的进度条使用以下代码更新: private int upload_progress; private Long time_previous_progress = Calendar.getInstance().getTimeInMillis(); protected void onProgressUpdate(Integer… progress) { Long time_now = Calendar.getInstance().getTimeInMillis(); if( ((time_now – time_previous_progress) < 55) // 55ms minimum delay || (progress[0] 100) // progress >0 && <100 || progress[0].equals(upload_progress) // progress changed || ! App.getStatus() // watcher is running ) { […]

第二个操作的PendingIntent会覆盖第一个操作和contentIntent for Notification

代码: int id = 0; NotificationCompat.Builder builder = new NotificationCompat.Builder(context) .setContentTitle(context.getString(R.string.notification_on_the_move_gps_title)) .setContentText(context.getString(R.string.notification_on_the_move_text)); builder.setStyle(new NotificationCompat.BigTextStyle().bigText(context.getString(R.string.notification_on_the_move_gps_big_text))); Intent mainIntent = new Intent(context, MainActivity.class); Intent turnOffIntent = new Intent(context, MainActivity.class); turnOffIntent.putExtra(MainApp.KEY_TURN_OFF_NOTIFICATION_ID, id); TaskStackBuilder mainBuilder = TaskStackBuilder.create(context); mainBuilder.addParentStack(MainActivity.class); mainBuilder.addNextIntent(mainIntent); PendingIntent mainPendingIntent = mainBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); builder.setContentIntent(mainPendingIntent); TaskStackBuilder turnOffBuilder = TaskStackBuilder.create(context); turnOffBuilder.addParentStack(MainActivity.class); turnOffBuilder.addNextIntent(turnOffIntent); PendingIntent turnOffPendingIntent = turnOffBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); builder .setSmallIcon(R.drawable.ic_stat_notification) .setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher)) […]

如何在应用关闭时获取Android通知?

从webserivce我得到日期和时间forms的数据,意味着某些特定日期我有一些插槽。 下图给出了详细说明。 在每个日期,我都有一些时间安排。 这里我想要的是在特定的日期和时间显示通知。 如果数据库的响应包含明天日期,如2012年12月7日上午11:00。 我需要在那时显示通知。 我对通知管理器和我正在使用的代码有一些想法.. Main.java NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.ic_action_search, “A New Message!”, System.currentTimeMillis()); Intent notificationIntent = new Intent(this, Main.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); notification.setLatestEventInfo(Main.this, notificationTitle, notificationMessage, pendingIntent); notificationManager.notify(10001, notification); 但在这里我需要在应用程序关闭时收到通知。 所以,任何人都可以帮助我。

如何修复此错误:“android.app.RemoteServiceException:从包中发布错误通知”

崩溃信息是: android.app.RemoteServiceException: Bad notification posted from package com.xx.xx: Couldn’t create icon: StatusBarIcon(pkg=com.xx.xx user=0 id=0x7f02035c level=0 visible=true num=0 ) android.app.ActivityThread$H.handleMessage(ActivityThread.java:1372) android.os.Handler.dispatchMessage(Handler.java:102) android.os.Looper.loop(Looper.java:136) android.app.ActivityThread.main(ActivityThread.java:5139) java.lang.reflect.Method.invokeNative(Native Method) java.lang.reflect.Method.invoke(Method.java:515) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612) dalvik.system.NativeStart.main(Native Method) 我认为问题是无法通过resIdfind可绘制资源。 你怎么看?

如果应用关闭,后台有android通知吗?

即使我的应用程序已关闭,我也会尝试在Android通知栏中显示通知。 我试过搜索,但我找不到帮助。 一个例子是新闻应用程序。 即使手机屏幕关闭或新闻应用程序关闭,它仍然可以发送最近新闻的通知并将其显示在通知栏中。 我如何在自己的应用程序中执行此操作?

Android:是否可以使用数字更新ImageView / ImageButton以显示新消息的数量?

在iOS中,我们有一个function,通过在图标的右上角显示一个小数字来更新应用程序图标和用户的新待处理消息,同样我想知道我们是否有更新ImageView / ImageButton的方法在android(这里我不打算更新主屏幕上的图标,但在我的应用程序内)。 例如,图片显示红色背景图标,其中待处理的消息数量以红色显示,如果没有消息则显示为灰色背景。 谢谢,

如何取消前台服务使用通知(轻扫解除)或清除所有通知?

我正在创建一个前台服务,其中包含服务启动时通知栏中显示的通知。 如果服务停止,则通知将解除。 我的问题是,当“清除所有通知”或解除通知(滑动)时,有没有办法停止服务? 更新以包括通知的实施: public int onStartCommand(Intent intent, int flags, int startId) { Log.d(CLASS, “onStartCommand service started.”); if (getString(R.string.service_start_action) == intent.getAction()) { Intent intentForeground = new Intent(this, ServiceMain.class) .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); PendingIntent pendIntent = PendingIntent.getActivity(getApplicationContext(), 0, intentForeground, 0); Notification notification; Notification.Builder builder = new Notification.Builder(getApplicationContext()) .setSmallIcon(android.R.drawable.btn_star) .setTicker(“Service started…”) .setContentIntent(pendIntent) .setDefaults(Notification.DEFAULT_ALL) .setOnlyAlertOnce(true) .setOngoing(false); notification = builder.build(); […]