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 的推送通知