2012-05-21 9 views
13

काम नहीं कर रहा है मुझे 10 सेकंड के बाद गतिविधि AlarmReceiver शुरू करने की आवश्यकता है (उदाहरण के लिए)। मुझे ऐप चलाने के बिना इसे सक्रिय करने की आवश्यकता है। लेकिन क्या ऐप चलता है या नहीं AlarmReceiver कॉल नहीं किया जाता है। कोई सुझाव?अलार्ममेनगर

Intent intent = new Intent(this, AlarmReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 111, intent, 0); 
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 

//alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() 
              //+ (10 * 1000), pendingIntent); 
Toast.makeText(this, "Alarm set", Toast.LENGTH_LONG).show(); 
+0

क्या आपने @Pratik D उत्तर की कोशिश की है? –

उत्तर

26
public class AlarmReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
      String message = "Hellooo, alrm worked ----"; 
      Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); 
      Intent intent2 = new Intent(context, TripNotification.class); 
      intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(intent2); 
    } 

    public void setAlarm(Context context){ 
     Log.d("Carbon","Alrm SET !!"); 

     // get a Calendar object with current time 
     Calendar cal = Calendar.getInstance(); 
     // add 30 seconds to the calendar object 
     cal.add(Calendar.SECOND, 30); 
     Intent intent = new Intent(context, AlarmReceiver.class); 
     PendingIntent sender = PendingIntent.getBroadcast(context, 192837, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

     // Get the AlarmManager service 
     AlarmManager am = (AlarmManager) context.getSystemService(context.ALARM_SERVICE); 
     am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender); 
    } 
} 

इस अंतिम कोड मैं काम कर पाने में कामयाब रहे है। तुम बस ऊपर मालसूची फ़ाइल में </application> टैग

<receiver android:process=":remote" android:name="AlarmReceiver"></receiver> 

जोड़ने की जरूरत है।

इस विधि SetAlarm()

+0

@Alex @ dinesh707 जहां 'SetAlarm() 'कहा जाता है? – Neo

+8

सुधार: रिसीवर हिस्सा एप्लिकेशन-टैग के अंदर होना चाहिए! –

+1

@JamesCameron आपने मेरी रात को बचाया .. – learner

6

अब के रूप में, यह एप्लिकेशन चलने के बिना अलार्म शुरू करने के लिए संभव नहीं है, तो आप एक बार अपने अलार्म .. इसके लिए .... सक्रिय करने के लिए अपने-अपने अनुप्रयोग चलाने चाहिए !!

आपका ALARM_ACTIVITY में:

AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 

Intent intent = new Intent(ALARM_ACTIVITY.this,ALARM_RECEIVER.class); 

PendingIntent pendingIntent = PendingIntent.getBroadcast(SetReminder.this, ID, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeInMillis() + 1000, pendingIntent); 

आपका ALARM_RECEIVER में:

NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

notification = new Notification(R.drawable.alarmicon, "charSequence", System.currentTimeMillis()); 

notification.setLatestEventInfo(context, "alarmTitle", "charSequence", pendingIntent); 

notification.flags |= Notification.FLAG_AUTO_CANCEL; 

notificationManager.notify(1, notification); 
-1

भी बुला के बाद एक अलार्म 30 सेकंड में गति प्रदान करने के सेट हो जाएगा, इसके बाद के संस्करण के अलावा, मुझे लगता है कि AlarmActivity में तरीकों लांचर गतिविधि की OnCreate विधि में होना चाहिए .. इस मामले में, अलार्म सक्रियता ऐप की लॉन्चर गतिविधि होनी चाहिए। इसने मेरी समस्या हल की

3

और यदि यह अभी भी android:process=":remote" भाग से छुटकारा पाने में काम नहीं कर रहा है तो मदद कर सकता है। मेरे लिए काम किया :)

संबंधित मुद्दे