标签: android-notifications

如何更改android中的状态栏颜色

首先,它不是重复,如在如何更改Android状态栏的背景颜色

如何更改状态栏颜色,该颜色应与导航栏中的颜色相同.

我希望状态栏颜色与导航栏颜色相同

在此输入图像描述

android statusbar android-notifications android-navigation

371
推荐指数
17
解决办法
70万
查看次数

在Android 5 Lollipop中,通知栏图标变为白色

我有一个显示自定义通知的应用.问题是,在Android 5中运行时,通知栏中的小图标显示为白色.我怎样才能解决这个问题?

android android-notifications android-5.0-lollipop

204
推荐指数
9
解决办法
19万
查看次数

INSTALL_FAILED_DUPLICATE_PERMISSION ... C2D_MESSAGE

我在我的应用中使用Google通知,直到现在我在清单中完成了以下操作:

<!-- GCM -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> <!-- GCM requires a Google account. -->
<uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- Keeps the processor from sleeping when a message is received. --> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <!-- This app has permission to register and receive data message. --> 

<!-- Creates a custom permission so only this app can receive its messages. NOTE: APP_PACKAGE.permission.C2D_MESSAGE -->   
<permission android:name="com.myapp.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="com.myapp.permission.C2D_MESSAGE" />    
<!-- END GCM -->
Run Code Online (Sandbox Code Playgroud)

它完美运行,直到我将Nexus 7更新为Android 5.0.
现在,当我尝试使用Eclipse在此设备中安装应用程序时,出现此错误:

INSTALL_FAILED_DUPLICATE_PERMISSION perm = com.myapp.permission.C2D_MESSAGE pkg …

android android-notifications google-cloud-messaging android-5.0-lollipop

176
推荐指数
9
解决办法
11万
查看次数

奥利奥没有显示通知

普通通知生成器不会在Android O上显示通知.

如何在Android 8 Oreo上显示通知?

是否有任何新代码要添加以在Android O上显示通知?

android android-notifications android-8.0-oreo

171
推荐指数
9
解决办法
13万
查看次数

升级到Android 8.1后,startForeground失败

将手机升级到8.1开发人员预览后,我的后台服务不再正常启动.

在我长期运行的服务中,我实现了一个startForeground方法来启动正在进行的通知,该通知在create上调用.

    @TargetApi(Build.VERSION_CODES.O)
private fun startForeground() {
    // Safe call, handled by compat lib.
    val notificationBuilder = NotificationCompat.Builder(this, DEFAULT_CHANNEL_ID)

    val notification = notificationBuilder.setOngoing(true)
            .setSmallIcon(R.drawable.ic_launcher_foreground)
            .build()
    startForeground(101, notification)
}
Run Code Online (Sandbox Code Playgroud)

错误信息:

11-28 11:47:53.349 24704-24704/$PACKAGE_NAMEE/AndroidRuntime: FATAL EXCEPTION: main
    Process: $PACKAGE_NAME, PID: 24704
    android.app.RemoteServiceException: Bad notification for startForeground: java.lang.RuntimeException: invalid channel for service notification: Notification(channel=My channel pri=0 contentView=null vibrate=null sound=null defaults=0x0 flags=0x42 color=0x00000000 vis=PRIVATE)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1768)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Run Code Online (Sandbox Code Playgroud)

服务通知的通道无效,显然我的旧通道DEFAULT_CHANNEL_ID不再适用于我假设的API 27.什么是合适的渠道?我试图浏览一下文档

service android background-service android-notifications kotlin

159
推荐指数
6
解决办法
8万
查看次数

Android通知声音

我使用了较新的NotificationCompat构建器,但我无法收到通知以发出声音.它会振动并闪烁光线.android文档说要设置我已完成的样式:

  builder.setStyle(new NotificationCompat.InboxStyle());
Run Code Online (Sandbox Code Playgroud)

但没声音?

完整代码:

NotificationCompat.Builder builder =  
        new NotificationCompat.Builder(this)  
        .setSmallIcon(R.drawable.ic_launcher)  
        .setContentTitle("Notifications Example")  
        .setContentText("This is a test notification");  


Intent notificationIntent = new Intent(this, MenuScreen.class);  

PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent,   
        PendingIntent.FLAG_UPDATE_CURRENT);  

builder.setContentIntent(contentIntent);  
builder.setAutoCancel(true);
builder.setLights(Color.BLUE, 500, 500);
long[] pattern = {500,500,500,500,500,500,500,500,500};
builder.setVibrate(pattern);
builder.setStyle(new NotificationCompat.InboxStyle());
// Add as notification  
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);  
manager.notify(1, builder.build());  
Run Code Online (Sandbox Code Playgroud)

android android-notifications

146
推荐指数
11
解决办法
18万
查看次数

在Android O中不推荐使用NotificationCompat.Builder

将我的项目升级到Android O后

buildToolsVersion "26.0.1"
Run Code Online (Sandbox Code Playgroud)

Android Studio中的Lint显示以下通知构建器方法的已弃用警告:

new NotificationCompat.Builder(context)
Run Code Online (Sandbox Code Playgroud)

问题是: Android开发人员更新了描述NotificationChannel的文档以支持Android O中的通知,并为我们提供了一个代码段,但使用了相同的弃用警告:

Notification notification = new Notification.Builder(MainActivity.this)
        .setContentTitle("New Message")
        .setContentText("You've received new messages.")
        .setSmallIcon(R.drawable.ic_notify_status)
        .setChannelId(CHANNEL_ID)
        .build();  
Run Code Online (Sandbox Code Playgroud)

通知概述

我的问题:是否还有其他解决方案可用于构建通知,并且仍然支持Android O?

我找到的解决方案是将通道ID作为Notification.Builder构造函数中的参数传递.但是这种解决方案并不完全可以重复使用.

new Notification.Builder(MainActivity.this, "channel_id")
Run Code Online (Sandbox Code Playgroud)

notifications android android-notifications

139
推荐指数
6
解决办法
12万
查看次数

如何在单击操作后关闭通知

从API级别16(Jelly Bean)开始,可以使用通知添加操作

builder.addAction(iconId, title, intent);
Run Code Online (Sandbox Code Playgroud)

但是当我向通知添加操作并按下操作时,通知不会被解除.单击通知本身时,可以将其解除

notification.flags = Notification.FLAG_AUTO_CANCEL;
Run Code Online (Sandbox Code Playgroud)

要么

builder.setAutoCancel(true);
Run Code Online (Sandbox Code Playgroud)

但显然,这与通知相关的操作无关.

任何提示?或者这不是API的一部分?我没找到任何东西.

android action android-notifications

132
推荐指数
8
解决办法
10万
查看次数

通知传递旧的Intent Extras

我通过以下代码在BroadcastReceiver中创建通知:

String ns = Context.NOTIFICATION_SERVICE;
        NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(ns);
        int icon = R.drawable.ic_stat_notification;
        CharSequence tickerText = "New Notification";
        long when = System.currentTimeMillis();

        Notification notification = new Notification(icon, tickerText, when);
        notification.defaults |= Notification.DEFAULT_VIBRATE;
        long[] vibrate = {0,100,200,200,200,200};
        notification.vibrate = vibrate;
        notification.flags |= Notification.FLAG_AUTO_CANCEL;

        CharSequence contentTitle = "Title";
        CharSequence contentText = "Text";
        Intent notificationIntent = new Intent(context, NotificationActivity.class);
        notificationIntent.putExtra(Global.INTENT_EXTRA_FOO_ID, foo_id);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);

        notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

        int mynotification_id = 1;

        mNotificationManager.notify(mynotification_id, notification);
Run Code Online (Sandbox Code Playgroud)

当我点击通知时,它会打开NotificationActivity,在Activity中我可以从Intent-Bundle中检索foo_id(例如1)

但是,如果触发另一个通知并再次单击它,则活动仍会从Intent-Bundle接收"旧"值(1).我试图用clear()清除包,但收到的效果相同.我觉得我的代码错了......

android android-notifications android-notification-bar android-pendingintent

129
推荐指数
4
解决办法
3万
查看次数

如何修复:android.app.RemoteServiceException:从包*发布的错误通知:无法创建图标:StatusBarIcon

我在崩溃日志中看到以下异常:

android.app.RemoteServiceException: Bad notification posted from package com.my.package: Couldn't create icon: StatusBarIcon(pkg=com.my.package user=0 id=0x7f02015d level=0 visible=true num=0 )
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1456)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:146)
    at android.app.ActivityThread.main(ActivityThread.java:5487)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
    at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

我使用以下方法通过AlarmManager从PendingIntent集中从IntentService发布我的通知.此处传递的所有值都来自PendingIntent/IntentService中的bundle extras.

/**
 * Notification 
 *
 * @param c
 * @param intent
 * @param notificationId
 * @param title
 * @param message
 * @param largeIcon
 * @param smallIcon
 */
public static void showNotification(Context c, Intent intent,
        int notificationId, String title, String message, int …
Run Code Online (Sandbox Code Playgroud)

android android-notifications android-resources android-drawable

112
推荐指数
9
解决办法
6万
查看次数