Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的通知没有';当我点击我的按钮时,它不会出现_Java_Android_Notifications - Fatal编程技术网

Java 我的通知没有';当我点击我的按钮时,它不会出现

Java 我的通知没有';当我点击我的按钮时,它不会出现,java,android,notifications,Java,Android,Notifications,有了这段代码,我想点击一个按钮并显示一个通知。 问题是当“在我的按钮中单击”时,不会出现任何通知。 我在youtube上搜索,在示例代码中,我没有看到我的错误,你能看到吗 btNotify.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ 通知(); } }); 公开无效通知(){ NotificationCompat.Builder=新建 通知建筑商(本); builder.setSmallIcon(R.dr

有了这段代码,我想点击一个按钮并显示一个通知。 问题是当“在我的按钮中单击”时,不会出现任何通知。 我在youtube上搜索,在示例代码中,我没有看到我的错误,你能看到吗


btNotify.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
通知();
}
});
公开无效通知(){
NotificationCompat.Builder=新建
通知建筑商(本);
builder.setSmallIcon(R.drawable.ic\u基线\u访问\u时间\u 24);
builder.setContentTitle(“时间”);
builder.setContentText(“Istoéum relógio”);
NotificationManager notifManager=(NotificationManager)
getSystemService(上下文通知服务);
notifManager.notify(1,builder.build());
}

您没有提到正在使用的android版本。 根据标准,当使用API级别26+(Android 8或更高版本)时,您必须向构建器构造函数提供一个通道

建议在应用程序启动时立即创建频道,因为没有它您无法发布通知(同样,这对API级别26+有效)。 别忘了给频道分配优先级。 您可以找到有关创建频道的详细信息

无论如何,通知通常用于在应用程序未使用时向用户提供信息。 如果您只想在按钮按下之后立即通知,您还可以考虑使用烤面包片或蛇棒吗? 它可以简单到:

Toast.makeText(yourContext, "Your message", Toast.LENGTH_LONG).show()
更新2020/08/11 根据您提到的android版本进行更新

android文档说明如下:

请注意,NotificationChannel构造函数需要一个重要性,使用NotificationManager类中的一个常量。此参数确定如何中断用户接收属于此频道的任何通知,尽管您还必须使用setPriority()设置优先级以支持Android 7.1及更低版本(如上所示)

  • 通过使用NotificationCompat生成器,您可以通过创建频道并将其提供给NotificationCompat构造函数来获得与android 8+的向上兼容性。对于较低版本,只需忽略通道
  • 使用通知时严格要求设置优先级。对于版本低于或等于Android 7.1的支持:您需要在生成器中设置优先级,因为频道(其本身具有优先级设置)被忽略
  • 尝试在生成器中添加具有setPriority的所需重要性规范:

    val builder ...
        .setPriority(NotificationCompat.PRIORITY_DEFAULT) // or any other priority level 
    
    更新2020-08-17 如何为API级别26+创建通道,如中所示:


    我完全测试了您的代码,通知看起来没有任何问题。可能您已经阻止了当前应用的通知?如何查看是否阻止通知?在您的模拟器/手机中:设置->应用->应用->通知检查通知是否被阻止。我在android 6上测试了您的代码。也许你在更高版本上有问题。我正在android 9中测试,通知在我的android版本是android 7,大约1我更改为NotificationCompat.Builder=new NotificationCompat.Builder(这是“通知”)@epilif3sotnas我刚刚读了你的评论,你正在android 9中测试。那么“通知”是指你频道的ID?在引用频道之前,是否确保已创建频道?您可以随时调用createchannel方法,它只会被创建一次。最好在MainActivity的onCreate方法中调用它。我不太清楚,但我的应用程序是安卓7.0+的,我的模拟器是安卓9。你是说你的minSdk版本是安卓7.0?在这种情况下,必须将setPriority添加到生成器中。对于更高版本,您必须提供一个频道。因此,对于您正在测试的设备,您需要确保在尝试设置通知时已经创建了通道。你已经这样做了?
    val builder ...
        .setPriority(NotificationCompat.PRIORITY_DEFAULT) // or any other priority level 
    
    private fun createNotificationChannel() {
        // Create the NotificationChannel, but only on API 26+ because
        // the NotificationChannel class is new and not in the support library
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            val name = getString(R.string.channel_name)
            val descriptionText = getString(R.string.channel_description)
            val importance = NotificationManager.IMPORTANCE_DEFAULT
            val channel = NotificationChannel(CHANNEL_ID, name, importance).apply {
                description = descriptionText
            }
            // Register the channel with the system
            val notificationManager: NotificationManager =
                getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
            notificationManager.createNotificationChannel(channel)
        }
    }