2012-08-20 15 views
36

मैं एंड्रॉइड के लिए वास्तव में नया हूं, मैं अलार्म के बारे में शोध कर रहा हूं। अगर उस दिन जन्मदिन है तो मैं अलार्म चाहता हूं। मैंने अलार्म मैनेजर का उपयोग किया है। मैं उलझन में था क्योंकि मैंने पढ़ा है कि यह रीबूट के बाद साफ़ हो जाता है। मेरे पास एंड्रॉइड फोन नहीं है इसलिए मैं सिर्फ एमुलेटर का उपयोग कर रहा हूं।क्या अलार्म प्रबंधक रीबूट के बाद भी जारी रहता है?

public void schedAlarm() { 
    AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); 
    Intent intent = new Intent(this, AlarmService.class); 
    pendingIntent = PendingIntent.getBroadcast(this, contact.id, intent, PendingIntent.FLAG_ONE_SHOT); 
    am.setRepeating(AlarmManager.RTC, timetoAlarm, nextalarm, pendingIntent); 
} 

मैं इस BroadcastRecever AlarmSerivce यहाँ के लिए की जगह में बनाया:

यहाँ मेरी कोड है

public void onReceive(Context context, Intent intent) { 
    nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
    CharSequence from = "It Birthday!"; 
    CharSequence message =" Greet your friend."; 
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, new Intent(), 0); 
    Notification notif = new Notification(R.drawable.ic_launcher, "Birthday", System.currentTimeMillis()); 
    notif.setLatestEventInfo(context, from, message, contentIntent); 
    nm.notify(1, notif); 
} 

यह पर्याप्त है ??

+0

@Lucifer के साथ मेरी समस्या के लिए मेरे पास मदद करें, अपने ही :) http://stackoverflow.com/questions/33374293/my-alarmmanager-only-one-day-start-when -the-device-restart –

+0

मुझे भी एक ही समस्या का सामना करना पड़ा कृपया कृपया मेरी मदद करें stackoverflow.com/questions/41197416/alarmmanager-not-working-after-phone-reboot –

उत्तर

70

एक साधारण उत्तर नहीं होगा। लेकिन हाँ, आप इसे BroadCastReceiver बनाकर प्राप्त कर सकते हैं जो डिवाइस को पूरा करने के दौरान अलार्म प्रारंभ करेगा।

ब्रॉडकास्ट रिसीवर कक्षा में बूट गतिविधि को फँसाने के लिए <action android:name="android.intent.action.BOOT_COMPLETED" /> का उपयोग करें।

आप AndroidManifest.xml में रेखा से ऊपर जोड़ने के लिए इस प्रकार की जरूरत है,

<receiver android:name=".AutoStartUp" android:enabled="true" android:exported="false" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
    </receiver> 
+1

क्या मैं केवल ब्रॉडकास्ट रिसेवर में अलार्म सेवा बदल सकता हूं? – Xelamae

+0

मुझे आपकी अलार्म सेवा फ़ाइल का कोड नहीं पता है, इसलिए मैं 'हाँ' नहीं कह सकता, लेकिन मैं आपको नया बनाने का सुझाव देता हूं, ताकि अगर कुछ गलत हो, तो आपके पास कम से कम आपका पिछला काम तैयार है :) – Lucifer

+0

मैंने रिसीवर पोस्ट किया। – Xelamae

1

हाँ, आप AlarmManager रिबूट करने के बाद भी काम करने के लिए कर सकते हैं। शायद यह सबसे आसान तरीका है: अपने AndroidManifest.xml में नीचे कोड जोड़ें:

<receiver android:name=".AlarmReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </receiver> 

मत भूलना के रूप में AndroidManifest.xml को उपयोगकर्ता के अनुमति शामिल करने के लिए:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 
0
कुछ में

फोन केवल

<action android:name="android.intent.action.Boot_COMPLETED" /> 

जोड़ने आप भी

जोड़ने के लिए काम नहीं करता है

पिछले एक