2012-07-07 9 views
5

Este es mi código:¿Por qué Eclipse no reconoce el método build() de la clase Notification.Builder para devolver un objeto de notificación?


NotificationManager mNotificationManager = (NotificationManager) c.getSystemService(ns); 

    //Instantiate the notification 

    CharSequence tickerText = "Hello"; 
    long when = System.currentTimeMillis(); 
    Notification.Builder builder = new Notification.Builder(c) 
           .setTicker(tickerText) 
           .setWhen(when) 
           .setContentTitle("Test Notification") 
           .setContentText(arg1.getStringExtra("info")) 
           .setSmallIcon(R.drawable.ic_launcher) 
           .setAutoCancel(true); 
    Notification notification = builder.getNotification(); 
    mNotificationManager.notify(88, notification); 

funciona Encuentra, pero utilizando Notification notification = builder.getNotification(); está en desuso. como debería estar haciendo Notification notification = builder.build();. El problema es que Eclipse no lo reconoce como tal, lo que significa que no me permitirá compilarlo. El documento es claro que existe build() y es el método preferido, pero no funciona en mi extremo. Me gustaría utilizar un código no desaprobado, por lo que cualquier ayuda será muy apreciada.

importaciones


import android.app.Notification; 
import android.app.Notification.Builder; 
import android.app.NotificationManager; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 

Sé consciente de que está diciendo su import android.app.Notification.Builder; no se utiliza.

+0

Sí señor. Acabo de actualizar – Andy

+1

¿Está apuntando a API 16? 'build()' es nuevo en Jelly Bean. – Eric

+1

¿Qué API estás usando? – Sam

Respuesta

2

Si desea desarrollar para la versión SDK menor que 11, se puede utilizar este código en lugar android.app.Notification.Builder clase para la notificación de la creación:

private void createNotification(){ 
    NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    Notification notification = new Notification(R.drawable.ic_launcher, "Hello", System.currentTimeMillis()); 
    Intent notificationIntent = new Intent(this, YourActivity.class); 

    Random r = new Random(); 
    int notificationId = r.nextInt(); 
    notificationIntent.putExtra("n_id", notificationId); 
    PendingIntent contentIntent = PendingIntent.getActivity(this, notificationId, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
    notification.defaults |= Notification.DEFAULT_SOUND; 
    notification.setLatestEventInfo(this, "Party", "Welcome!", contentIntent); 
    mNotificationManager.notify(notificationId, notification);  
} 

Usted puede cancelar esta notificación en YourActivity de esta manera:

public class YourActivity extends Activity{ 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.your_activity); 

    int notificationId = getIntent().getIntExtra("n_id", -1); 

    if (notificationId!=-1) { 
     NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     mNotificationManager.cancel(notificationId); 
    } 
    } 
} 
+0

¿Qué significa el signo de la tubería y el signo igual? '| ='. Es java específico. Pero gracias. – Andy

+0

Sí. Es uno de los operadores lógicos en Java. El operador OR ** (|) inclusivo de Bitwise realiza la operación OR inclusiva de bit a bit en cada par paralelo de bits de dos operandos. En cada par, el resultado es 1, si el primero o el segundo bit es 1 (o ambos son 1). De lo contrario, el resultado es 0. Cuando se usa con una sentencia compuesta como ** x | = y **, debe leerse como ** x = x | y ** – anivaler

1

Esto solo ocurre cuando, Usted está compilando el código de su aplicación contra la versión que no es requerida método/api (en su caso es build()).

Si la compilación no está disponible en la versión que está compilando, le sugiero que compile con una versión superior de Android, siempre tiene versión sdk mínima en manifiesto por compatibilidad con versiones anteriores.

Gracias

+0

Pero mi versión sdk es ICS, que debería tener esto. Aunque veo lo que estás diciendo. – Andy

Cuestiones relacionadas