2013-09-05 6 views
7

ट्रिगर नहीं कर रहा है मैं निर्दिष्ट समय पर अलार्म सेट करने की कोशिश कर रहा हूं, लेकिन यह मेरे रिसीवर में पकड़ा नहीं जा रहा है।एंड्रॉइड अलार्म प्रबंधक सेट

सेटअप:

public class ActionReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
    Bundle bundle = intent.getExtras(); //breakpoint here that doesn't get triggered 
    } 
} 

मैं अपने प्रकट में इन मूल्यों डाल दिया है:

Intent intent = new Intent(this, ActionReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); 

Calendar current = Calendar.getInstance(); 
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, (current.getTimeInMillis() + 60000),3600000, pendingIntent); 

यहाँ मेरी reciver है

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<receiver android:name="com.project.ActionReceiver" android:enabled="true" /> 

सुनिश्चित नहीं हैं कि क्या गलत है ... धन्यवाद !

+0

रिसीवर हो नहीं करना चाहिए' ActionReceiver' – kabuto178

उत्तर

1

अपने प्रकट होना चाहिए वर्ग के नाम में रिसीवर के नाम, जैसे:

<receiver android:name="com.project.ActionReceiver"> 

Btw, सेट एक कार्रवाई एक बेहतर अभ्यास है।

Intent intent = new Intent(this, ActionReceiver.class); 
intent.setAction("com.project.action.ALERM"); 

और प्रकट

<receiver android:name="com.project.ActionReceiver"> 
    <intent-filter> 
     <action android:name="com.project.action.ALERM"/> 
    </intent-filter> 
</receiver> 
+0

धन्यवाद William.That works.Though AndroidManifest.xml चेतावनी देते हैं कि रिसीवर को अनुमति की आवश्यकता नहीं है ' – Anirudha

0

में अपने ActionReceiver की पूरी तरह से योग्य वर्ग के नाम करने के लिए अपने receiver की android:name विशेषता बदलने का प्रयास करें। कुछ ऐसा:

<receiver android:name="com.project.ActionReceiver" android:enabled="true" /> 
+0

बदल दिया। हालांकि यह अभी भी रिसीवर ट्रिगर नहीं करता है। –

4

अंततः रिसीवर को आग लग गई! निर्यात किए गए `:

<receiver 
     android:name="com.project.ActionReceiver" 
     android:exported="true" > 
     <intent-filter> 
      <action android:name="com.project.ActionSetter" > 
      </action> 
     </intent-filter> 
    </receiver> 

विवरण के साथ यहाँ मिला:: मैं अपने प्रकट करने के लिए निम्न कोड जोड़ा https://stackoverflow.com/a/16119351/1174574

+0

आपको या तो एंड्रॉइड की आवश्यकता है: निर्यात किया गया = "सत्य" 'या ''। दोनों नहीं आपके पास न तो था, यही कारण है कि यह काम नहीं कर रहा था। ' 'को आपके ऐप के बाहर ऐप्स पर उपलब्ध होना आवश्यक है (उदाहरण के लिए,' अलार्ममेनगर')। ऐसा करने के लिए आप या तो 'एंड्रॉइड सेट कर सकते हैं: exported = "true" 'या एक' 'जोड़ें। यदि आप '' जोड़ते हैं, तो धारणा यह है कि ' 'निर्यात किया जाना चाहिए, इसलिए' निर्यात 'का डिफ़ॉल्ट मान' 'की उपस्थिति में' true' पर सेट किया गया है। । –

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