Android 中未显示通知标题

Posted

技术标签:

【中文标题】Android 中未显示通知标题【英文标题】:Notification title not being shown in Android 【发布时间】:2021-12-09 22:13:23 【问题描述】:

我试图从用户那里获取通知的标题,以显示他们何时达到最高值,我这样做了:

 @Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);


    setContentView(R.layout.activity_main);

    minTitle1 = (EditText) findViewById(R.id.minTitle1) ;
  maxTitle1 = (EditText) findViewById(R.id.maxTitle1) ;


   submit.setOnClickListener(new View.OnClickListener() 

        @Override
        public void onClick(View view) 
            try 
                highestText = Integer.parseInt(highest.getText().toString().trim());
                minimumText = Integer.parseInt(minimum.getText().toString().trim());
                minTitle =minTitle1.getText().toString();
                maxTitle=maxTitle1.getText().toString();
             catch(Exception ex)
                Toast.makeText(getApplicationContext(),"Please enter numbers!",Toast.LENGTH_SHORT).show();
            
        
    );

    countUp.setOnClickListener(new View.OnClickListener() 

        @Override
        public void onClick(View view) 
            if(highestText == 0 && minimumText == 0)
                Toast.makeText(getApplicationContext(),"Please enter the target numbers!",Toast.LENGTH_SHORT).show();
            else 

                if (highestText == count+1 ) 
                    NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this, "number");
                    builder.setContentTitle(maxTitle);
                    builder.setContentText("please be aware that you reached the maximum number");
                    builder.setSmallIcon(R.drawable.ic_launcher_background);
                    builder.setAutoCancel(true);
                    NotificationManagerCompat managerCompat = NotificationManagerCompat.from(MainActivity.this);
                    managerCompat.notify(1, builder.build());
                

由于某种原因,通知中没有显示标题。我错过了什么吗?我该如何解决?

【问题讨论】:

您能提供更多信息吗?更多代码?你是说builder.setContentTitle(maxTitle); 不工作吗?您没有显示分配maxTitle1 的位置。 是 builder.setContentTitle(maxTitle);没有显示我从用户那里获得的标题。我在其分配的位置添加了更多代码 @mightyleen 用户可以在不先点击submit的情况下点击countUp吗? 设置一个断点,maxTitle 被赋值,看它是否得到一个值。在设置通知标题的位置设置断点,以查看maxTitle 的值是什么。仔细检查您的 activity_main 布局,确保将 ID maxTitle1 分配给用户输入标题的控件。 @akhilnair 不,他们不能 【参考方案1】:

对于 android 8.0 及更高版本,您必须像这样创建一个通知通道:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) 
    CharSequence name = getString(R.string.channel_name);
    String description = getString(R.string.channel_description);
    int importance = NotificationManager.IMPORTANCE_DEFAULT;
    NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
    channel.setDescription(description);
    // Register the channel with the system; you can't change the importance
    // or other notification behaviors after this
    NotificationManager notificationManager = getSystemService(NotificationManager.class);
    notificationManager.createNotificationChannel(channel);

从您的代码中可以清楚地看出,当您的最高文本等于 count+1 时,您的通知会弹出,但您正在更新提交按钮中的 maxtitle 值,因此在显示通知时它不会设置为当前的 maxtitle 值。所以 添加 maxTitle=maxTitle1.getText().toString();在你之前 builder.setContentTitle(maxTitle);在您的 countUp 点击时更新您的 maxtitle。

         countUp.setOnClickListener(new View.OnClickListener() 

        @Override
        public void onClick(View view) 
            if(highestText == 0 && minimumText == 0)
                Toast.makeText(getApplicationContext(),"Please enter the target numbers!",Toast.LENGTH_SHORT).show();
            else 

                if (highestText == count+1 ) 
                    NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this, "number");
                    maxTitle=maxTitle1.getText().toString();
                    builder.setContentTitle(maxTitle);
                    builder.setContentText("please be aware that you reached the maximum number");
                    builder.setSmallIcon(R.drawable.ic_launcher_background);
                    builder.setAutoCancel(true);
                    NotificationManagerCompat managerCompat = NotificationManagerCompat.from(MainActivity.this);
                    managerCompat.notify(1, builder.build());
                
        

【讨论】:

通知正在努力显示标题 你的最大标题是什么??它是固定值吗?? 没有。我从用户那里得到价值 Insha Allah ta'aaa 我更新的答案会起作用。【参考方案2】:

这里缺少的是频道的创建

在 Android 8.0 及更高版本上发送通知之前,您必须通过将 NotificationChannel 的实例传递给 createNotificationChannel() 来向系统注册应用的通知通道

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)
  

由于您必须在 Android 8.0 及更高版本上发布任何通知之前创建通知通道,因此您应该在应用启动后立即执行此代码。重复调用它是安全的,因为创建现有通知通道不会执行任何操作。

更多信息here

【讨论】:

我已经创建了一个频道。我无法发布它的代码,因为它不允许我放置更多代码

以上是关于Android 中未显示通知标题的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 8.0 中未显示使用 parse sdk 的推送通知

OneSignal - Android React Native 中未显示弹出通知

三星Android 7中未显示通知图标

奥利奥中未显示通知

推送通知中未显示图像

在android中未收到推送通知