6

我需要帮助才能做某事。我尝试在 android 状态栏中显示通知。

它将通知用户与服务器的同步正在进行中。

现在,我使用这段代码,它工作正常:

    NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
            .setSmallIcon(android.R.drawable.stat_notify_sync).setWhen(System.currentTimeMillis())
            .setAutoCancel(false).setOngoing(true);

    NotificationManager nm = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notif = builder.getNotification();
    nm.notify(1, notif);

唯一的问题是当用户展开状态栏时会创建一个视图。我想要做的只是在状态栏顶部显示一个小图标,没有内容视图。

有人知道该怎么做吗?提前致谢!

4

4 回答 4

3

这是不可能的。

基本原理是:如果用户查看状态栏并看到一个图标,她应该有某种方法可以弄清楚该图标的含义。因此,通知面板中必须有一行与每个图标对应。

我建议创建一个通知,就像您在问题中所做的那样,说明正在进行同步;这是指示当前正在同步哪个应用程序的绝佳机会(因此,如果存在某种问题或同步需要永远,用户就知道哪个应用程序需要关注)。

于 2013-04-10T04:11:54.220 回答
1

您可以使用此方法在状态栏上显示通知图标

 private void showNotification() {
    nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    // In this sample, we'll use the same text for the ticker and the
    // expanded notification

    // Set the icon, scrolling text and timestamp
    Notification notification = new Notification(R.drawable.ic_launcher,
            "Service Started", System.currentTimeMillis());
    // The PendingIntent to launch our activity if the user selects this
    // notification
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
            new Intent(this, MainActivity.class), 0);
    // Set the info for the views that show in the notification panel.
    notification.setLatestEventInfo(this, getText(R.string.service_label),
            "Service Started", contentIntent);
    // Send the notification.
    // We use a layout id because it is a unique number. We use it later to
    // cancel.
    nm.notify(R.string.service_started, notification);

}
于 2013-04-09T05:09:57.123 回答
0

好吧,这对于 InputMethodService 是可能的,只需使用 showStatusIcon(resource_name)。但我认为这对于除了输入服务之外的任何东西都不是一个好主意。

于 2013-07-01T11:32:43.930 回答
0
Context context = TutListDownloaderService.this
.getApplicationContext();
NotificationManager notificationManager = (NotificationManager) context
.getSystemService(NOTIFICATION_SERVICE);

创建通知:

Notification updateComplete = new Notification();
updateComplete.icon = android.R.drawable.stat_notify_sync;
updateComplete.tickerText = context.getText(R.string.notification_title);
updateComplete.when = System.currentTimeMillis();

创建待处理对象:

Intent notificationIntent = new Intent(context,TutListActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
notificationIntent, 0);

String contentTitle = context.getText(R.string.notification_title).toString();
String contentText;
if (!result) {
Log.w(DEBUG_TAG, "XML download and parse had errors");
contentText = context.getText(R.string.notification_info_fail).toString();
} else {
contentText = context.getText(
    R.string.notification_info_success).toString();
}
updateComplete.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

最后向用户显示通知:

notificationManager.notify(LIST_UPDATE_NOTIFICATION, updateComplete);
于 2013-08-06T14:26:52.880 回答