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
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
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
Bağlantılar çalışmıyor 404 Hatalar. –