2012-08-24 16 views
10

मैं इस कोड मिल गया है:क्या मैं एंड्रॉइड पर स्थानीय ब्रॉडकास्ट मैनेजर के साथ अलार्ममेनगर का उपयोग कर सकता हूं?

private AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
private PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, new Intent("my action-name"), 0); 

alarmManager.setInexactRepeating((int)AlarmManager.ELAPSED_REALTIME_WAKEUP,  SystemClock.elapsedRealtime() + autoUpdateIntervalInMinutes * 60 * 1000, autoUpdateIntervalInMinutes * 60 * 1000, alarmIntent); 

लेकिन मैं LocalBroadcastManager के लिए इस परिवर्तन करना चाहते हैं। क्या यह संभव है?

उत्तर

8

नहीं, यह संभव नहीं है, क्योंकि LocalBroadcastManager केवल आपकी प्रक्रिया के लिए है, और AlarmManager का बैकएंड एक अलग प्रक्रिया में चलता है। यही कारण है कि PendingIntent बनाने का कोई तरीका नहीं है जो LocalBroadcastManager के साथ काम करता है।

+2

वहाँ आशय अधिक निजी बनाने के लिए एक तरीका है, ताकि अन्य एप्लिकेशन का उपयोग करने के लिए सक्षम नहीं होगा यह? –

+2

संक्षेप में, नहीं। हालांकि आपके ब्रॉडकास्ट को सुनना चाहते हैं जो किसी अन्य ऐप को पूर्ण क्रिया स्ट्रिंग को जानने की आवश्यकता होगी। यह आपको कम से कम अस्पष्टता के माध्यम से कुछ सुरक्षा देता है (जो वास्तव में सुरक्षा नहीं है)। – Doge

4

लेकिन अगर आप एक BroadcastReceiver जो मूल रूप से धर्मान्तरित "ग्लोबल" एक LocalBroadcast में प्रसारण रजिस्टर कर सकते हैं:

public class AutoUpdateBroadcastReceiver extends BroadcastReceiver { 

    private static final String TAG = AutoUpdateBroadcastReceiver.class.getSimpleName(); 

    @Override 
    public void onReceive(Context context, Intent intent) { 
    Log.d(TAG, ".onReceive"); 
    LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(context); 
    lbm.sendBroadcast(intent); 
    } 
} 
+2

हां, आप _can_ लेकिन इसका मतलब यह नहीं है कि आप _should_। 'LocalBroadcastManager' का पूरा बिंदु यह है कि सुरक्षा कारणों से यह केवल एप्लिकेशन के भीतर से प्रसारण प्राप्त कर सकता है। यदि आप एक रिसीवर बनाते हैं जो बाहर से प्रसारण प्राप्त करता है और उन्हें स्थानीय प्रबंधक पर फिर से प्रसारित करता है, तो यह 'लोकलबॉडकास्ट प्रबंधक' के पूरे उद्देश्य को हरा देता है। आप रिसीवर को गैर-स्थानीय रूप से पंजीकृत भी कर सकते हैं और 'लोकलबॉडकास्ट प्रबंधक' पर पंजीकृत अन्य सभी चीज़ों को खतरे में नहीं डाल सकते हैं। – spaaarky21

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