2012-02-01 32 views
6

Phonegap'in bir bildirimi tetiklemesi için StatusBarNotification eklentisini (Android) kullanıyorum. Şimdi bunu belirli bir zamanda yapmak istiyorum ve okuduklarımdan Android'in AlarmManager'ını kullanmak zorundayım. Bazı yaklaşımları denedim ama işe yaramayacak gibi görünmüyor.Phonegap ile birlikte AlarmManager

Bunu nasıl yapabileceğime dair herhangi bir öneriniz var mı?

DÜZENLEME: Kodu onReceive() 'a showNotification()' a koyarsam gösterilecek bildirimi alabilirim. Sorun, alıcının Alarm-thingy'yi almadığı görünüyor. Muhtemelen IntentFilter'da doğru eylemim olmadığından.

bu benim kodumdur. Ben PhoneGap için StatusBarNotification eklentisinden inşa ettik, here

public class StatusBarNotification extends Plugin { 
// Action to execute 
public static final String ACTION="notify"; 

private Context context; 
BroadcastReceiver receiver; 

public StatusBarNotification() { 
    this.receiver = null; 
} 

public void setContext(PhonegapActivity ctx) { 
    super.setContext(ctx); 
    IntentFilter intentFilter = new IntentFilter(); 
    intentFilter.addAction(); //Dunno what to put here 
    if(receiver == null) { 
     this.receiver = new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context context, Intent intent) { 
       Log.d("Notification", "inside onReceive"); 
       /*int icon = R.drawable.notification; 
       long when = System.currentTimeMillis(); 
       NotificationManager manager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); 

       Intent notificationIntent = new Intent(context, context.getClass()); 
       PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0); 
       Notification noti = new Notification(icon, "NOTIFICATION", when); 
       noti.setLatestEventInfo(context, "TITLE", "TEXT", contentIntent); 
       manager.notify(1, noti); 
       */ 
      } 
     }; 
     ctx.registerReceiver(this.receiver, intentFilter); 
    } 
} 

/** 
* Executes the request and returns PluginResult 
* 
* @param action  Action to execute 
* @param data   JSONArray of arguments to the plugin 
* @param callbackId The callback id used when calling back into JavaScript 
* 
* @return    A PluginRequest object with a status 
* */ 
@Override 
public PluginResult execute(String action, JSONArray data, String callbackId) { 
    String ns = Context.NOTIFICATION_SERVICE; 

    context = this.ctx.getApplicationContext(); 

    PluginResult result = null; 
    if (ACTION.equals(action)) { 
     try { 

      String title = data.getString(0); 
      String body = data.getString(1); 
      Log.d("NotificationPlugin", "Notification: " + title + ", " + body); 

      showNotification(title, body); 
      result = new PluginResult(Status.OK); 
     } catch (JSONException jsonEx) { 
      Log.d("NotificationPlugin", "Got JSON Exception " 
        + jsonEx.getMessage()); 
      result = new PluginResult(Status.JSON_EXCEPTION); 
     } 
    } else { 
     result = new PluginResult(Status.INVALID_ACTION); 
     Log.d("NotificationPlugin", "Invalid action : "+action+" passed"); 
    } 
    return result; 
} 

/** 
* Displays status bar notification 
* 
* @param contentTitle Notification title 
* @param contentText Notification text 
* */ 
public void showNotification(CharSequence contentTitle, CharSequence contentText) { 
    Intent intent = new Intent(ctx, ctx.getClass()); 
    PendingIntent pi = PendingIntent.getBroadcast(ctx, 1234, intent, PendingIntent.FLAG_CANCEL_CURRENT); 
    Calendar cal = Calendar.getInstance(); 
    AlarmManager am = (AlarmManager) ctx.getSystemService(ctx.ALARM_SERVICE); 
    am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pi); 

} 

public void onDestroy() { 
    if (this.receiver != null) { 
     try { 
      this.ctx.unregisterReceiver(this.receiver); 
     } catch (Exception e) { 
      Log.e("LOG TAG", "Error unregistering network receiver: " + e.getMessage(), e); 
     } 
    } 
} 

} Muhtemelen AlarmManager şeyler yapabilirim bir PhoneGap eklenti yazmak zorunda kalacak

cevap

0
+0

Denediğim şeylerden biri bu. Muhtemelen doğru yapmadı. Şimdiye kadar bir "sorunum" olan şey, IntentFilter'ime ne tür bir eylem eklemem gerekiyor? BroadcastReceiver örneklerine baktığım zamandır. – user713821

+0

Ben aslında bir uygulama için bu kendimi ele almak üzereyim. Bu soruya göz kulak olurum ve bir çözüm bulursam güncelleştirir ... – Devgeeks

+0

Bağlantılar çalışmıyor 404 Hatalar. –

1

Belirli tarih ve saat için alarm oluşturmak üzere LocalNotification.js kullanmalıdır. Çünkü onu kullandım ve iyi çalışıyor.

+0

Bazı örnek kodları ekleyebilir misiniz? –

+0

Bazı belgeler ve github proje sayfasından bir örnek: https://github.com/phonegap/phonegap-plugins/tree/master/Android/LocalNotification –