【问题标题】:Trying to build a simple notification in android尝试在android中构建一个简单的通知
【发布时间】:2012-10-02 17:39:36
【问题描述】:

我正在尝试在我的 Android 应用程序中设置一个通知,它只会说“它有效”,但我需要我的应用程序一直兼容到 API 1。我真的很困惑如何做到这一点尽管。有些旧教程已弃用,有些新教程不支持旧 API 级别。根据这个SO 问题,我应该使用NotificationCompat.Builder。我正在使用一个示例,但我并不完全理解代码。

这段代码:

Intent notificationIntent = new Intent(ctx, YourClass.class);
PendingIntent contentIntent = PendingIntent.getActivity(ctx,
        YOUR_PI_REQ_CODE, notificationIntent,
        PendingIntent.FLAG_CANCEL_CURRENT);

NotificationManager nm = (NotificationManager) ctx
        .getSystemService(Context.NOTIFICATION_SERVICE);

Resources res = ctx.getResources();
Notification.Builder builder = new Notification.Builder(ctx);

builder.setContentIntent(contentIntent)
            .setSmallIcon(R.drawable.some_img)
            .setLargeIcon(BitmapFactory.decodeResource(res, R.drawable.some_big_img))
            .setTicker(res.getString(R.string.your_ticker))
            .setWhen(System.currentTimeMillis())
            .setAutoCancel(true)
            .setContentTitle(res.getString(R.string.your_notif_title))
            .setContentText(res.getString(R.string.your_notif_text));
Notification n = builder.build();

nm.notify(YOUR_NOTIF_ID, n);

下面有红线:ctxYOUR_PI_REQ_CODEYOUR_NOTIF_ID

【问题讨论】:

    标签: java android android-notifications


    【解决方案1】:

    ctx 变量旨在成为一个 Android 上下文——通常是一个 Activity(或者实际上是一个扩展 Activity 的类)。

    您应该对PendingIntent 类进行一些研究以了解YOUR_PI_REQ_CODE,但您需要确定放在这里的内容;这是你的待处理的意图请求代码。

    您还应该研究NotificationManager notify() 方法以确定您希望将什么用作您的通知ID。

    【讨论】:

    • 根据您链接的 SO 答案,您使用的代码仅在 API v4 和更新版本中受支持。话虽这么说......为什么你觉得你需要支持比这更老的人?任何拥有这么旧手机的人都不太可能安装新应用程序。
    • 呸。我想你是对的哈哈哈。谢谢。我很感激你的努力。快速提问。你知道什么方法使通知“不可取消”吗?语音邮件通知的工作方式。在您检查所有语音邮件之前,它不会消失。谢谢
    • 构建Notification 后,您可以修改其公共flags 成员(没有方法,只是您更改的公共int)以设置各种标志。应该为您描述的用例设置 FLAG_ONGOING_EVENT(参见 developer.android.com/reference/android/app/…)。
    • 谢谢。当涉及到通知时,您知道自己的东西。再次感谢您的帮助。
    【解决方案2】:

    ctx 是上下文。它可以改为传递您的 Activity。

    YOUR_PI_REQ_CODE 是 PendintIntent 请求代码。它可以是任何 int 常量。

    YOUR_NOTIF_ID 是通知 ID。它也可以是任何 int 常量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-18
      • 1970-01-01
      • 2021-04-28
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多