2013-05-10 25 views
12

ile Bildirim Oluştur: BuradaBu Kod ile Notification oluşturmaya çalıştınız BroadcastReceiver

private void setNotificationAlarm(Context context) 
{ 
    Intent intent = new Intent(getApplicationContext() , MyNotification.class); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); 

    AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
    am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 , pendingIntent); 
    Log.d("ME", "Alarm started"); 
} 

public class MyNotification extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     Log.d("ME", "Notification started"); 

     NotificationCompat.Builder mBuilder = 
      new NotificationCompat.Builder(context) 
      .setSmallIcon(R.drawable.ic_launcher) 
      .setContentTitle("My notification") 
      .setContentText("Hello World!"); 

     NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
     mNotificationManager.notify(1, mBuilder.build()); 
    } 
} 

Ve Mainfest beyanı: alarm oluşturulur ki şimdi ediliyorsa

<receiver 
    android:name=".MyNotification" 
    android:enabled="true" 
    android:exported="false" > 
</receiver> 

Sorunum ama Bildirim görüntülenmiyor. BroadcastReceiver ana dosyada bildirildi ve derleyici veya çalışma zamanı hataları yok.

İkinci sorunum, setLatestEventInfo ve new Notification Contructor'ın kullanımdan kaldırılmasıdır. Bunun yerine ne kullanabilirim? Kullanabileceğiniz

cevap

9

Sana

PendingIntent.getBroadcast (Context context, int requestCode, Intent intent, int flags) 

yerine artık bildirim oluşturmak için Notification.Builder kullanmak getService

+0

tamam teşekkürler söz konusu eylem adı kullanarak bunu kavuşabilir tezahür

<receiver android:name=".MyNotification " android:enabled="true" > <intent-filter> <action android:name="your package.ANY_NAME" /> </intent-filter> </receiver> 

içinde tanımlayan bir eylemdir söyledi. Yukarıdaki kodumu güncelledim. Şu anda hiçbir şey olmuyor ... – Cilenco

+1

BroadcastReceivers genellikle bazı eylemler üzerinde çalışır. Yayın alıcınızın çalışacağı bir eylem tanımlayın ve ardından bu eylemi manifest ve niyete ekleyin. Daha fazla detay [burada] (http://www.vogella.com/articles/AndroidBroadcastReceiver/article.html) –

3

kullanmaya ihtiyacım var ve bekleyen niyet PendingIntent.getBroadcast()

6

olması gerekiyor

Intent switchIntent = new Intent(BROADCAST_ACTION);

yerine buraya BROADCAST_ACTION içinde

Intent intent = new Intent(getApplicationContext() , MyNotification.class);

kullanmanın

Eğer

public class MyNotification extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    String act = "your package.ANY_NAME"; 
     if(intent.getAction().equals(act)){ 

      //your code here 
     } 
}}