2012-10-11 23 views
4

我想在我的android应用程序中设置一个通知,它只会说“它工作”,但我需要我的应用程序具有兼容性一直到API 1。米真的很困惑如何做到这一点。有旧的教程已过时,并且有新的教程不支持较旧的API级别。根据这个SO的问题,我应该使用NotificationCompat.Builder。有一个我正在使用的例子,但我没有完全理解代码。试图在Android中构建一个简单的通知

出于这种代码:

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

回答

2

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

您应该对PendingIntent课进行一点研究,以了解YOUR_PI_REQ_CODE,但您需要确定要放在这里;它是您的待处理的意向请求代码。

您还应该研究NotificationManagernotify()方法以确定您想要使用的您的通知ID。

+0

嗯....任何想法,为什么它不适用于API级别3? – EGHDK

+0

根据您所链接的SO答案,您使用的代码仅在API v4及更新版本中受支持。这就是说......为什么你觉得你需要支持比这更老的?任何使用旧手机的人都不太可能安装新的应用程序。 – mah

+0

Bah。我想你是对的哈哈哈。谢谢。我很欣赏这种努力。快速提问。你知道什么方法使通知“不可取消”吗?语音邮件通知如何工作。在您检查所有语音邮件之前,它不会消失。谢谢 – EGHDK

2

ctx为语境。它可以通过你的活动。

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

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