2011-03-07 23 views
7

मेरे पास एक रैपर वर्ग (ब्लूटूथडिस्कोवर) है जो एक सेवा के भीतर तत्काल है। यह वर्ग ब्लूटूथ एडाप्टर प्राप्त करता है और यह जांचता है कि पड़ोसी उपकरणों के लिए स्कैनिंग से पहले ब्लूटूथ सक्षम है या नहीं।एंड्रॉइड - एक गतिविधि के बाहर startActivityForResult?

अब अगर ब्लूटूथ सक्षम नहीं है मैं इस वर्ग (BluetoothDiscoverer) के भीतर निम्न करने के लिए सक्षम होना चाहते हैं:

Intent enableBluetoothIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 

startActivityForResult(enableBluetoothIntent, BLUETOOTH_ENABLER); 

अब मैं इस पढ़ा है: use startActivityForResult from non-activity

लेकिन मैं नहीं करना चाहती इस ऑब्जेक्ट में मेरी मुख्य गतिविधि को पास करने के लिए, क्योंकि मैं परिणाम से निपटना चाहता हूं (चाहे उपयोगकर्ता ब्लूटूथ को सक्षम करने के लिए स्वीकार करता है या नहीं) BluetoothDiscoverer क्लास के भीतर।

अब मैं मैं एक NullPointerException हो रही है जब startActivityForResult के बारे में कहा जा रहा है लगता है BluetoothDiscoverer गतिविधि

का एक उपवर्ग करते हैं।

मुझे लगता है कि ऐसा इसलिए है क्योंकि मुझे ऑनक्रेट()/onDestroy() विधि, जोड़ने की आवश्यकता है, लेकिन यह मेरे द्वारा किए जा रहे कार्यों के उद्देश्य को हरा देता है क्योंकि मुझे सेवा के भीतर BluetoothDiscoverer ऑब्जेक्ट पर विधियों को कॉल करने में सक्षम होना चाहिए जो इस वर्ग को तुरंत चालू करता है।

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

क्या इसके लिए कोई काम है?

धन्यवाद एंड्रियास

उत्तर

6

startActivityForResult() असली परदे पर गतिविधियों से ही उपलब्ध है। कृपया अपने आवेदन को फिर से डिजाइन करें ताकि उपयोगकर्ता इंटरफ़ेस गतिविधियों से संचालित हो, फिर में डिवाइस के लिए आपकी सेवा स्कैन हो।

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

आप BluetoothDiscoverer से छुटकारा और Service है, जो एक Context है और इसलिए रिसीवर रजिस्टर कर सकते हैं में अपने तर्क को स्थानांतरित मिलता है।

+0

धन्यवाद। मैंने अपना तर्क बदल दिया है और अब काम करता है :-) – kkudi

0

अपने Service में, Activity बनाएं जिसका उद्देश्य ब्लूटूथ खोजे जाने का अनुरोध करना है। इस Activity के लिए Intent के साथ एक Messenger दर्रा और Activity खोज क्षमता गतिविधि शुरू किया है:

Intent enableBluetoothIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
startActivityForResult(enableBluetoothIntent, BLUETOOTH_ENABLER); 

फिर, onActivityResult() अंदर संदेश Messenger के माध्यम से वापस आपकी सेवा के लिए भेज देते हैं।

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