दबाए जाने पर मैंने अपने ऐप द्वारा अपना headset buttons get recognized प्राप्त करने में कामयाब रहा, लेकिन बटनों में से एक को MyCustomActivity में एक विधि को कॉल करने की आवश्यकता है। समस्या onReceive के 1 पैरामीटर एक प्रसंग है कि गतिविधि में ढाला नहीं जा सकता है और एक MyCustomActivity के भीतरी वर्गwon't work in Android 4.1 का उपयोग कर जब तक यह स्थिर है (है ही।ब्रॉडकास्ट रिसीवर के उप-वर्ग में पैरामीटर कैसे पास करें?
MyCustomActivity की विधि का उपयोग करने की अक्षमता की समस्या तो एकमात्र विकल्प छोड़ दिया है जो मेरे लिए (क्रम दोनों 2.x और 4.1 का समर्थन करने के) RemoteControlReceiver को पैरामीटर के रूप गतिविधि पारित करने के लिए है
लेकिन मैं कैसे करते हो कि, जब एक ही रास्ता का दृष्टांत को यह माध्यम से होता है:।
private ComponentName mRemoteControlReceiver = new ComponentName(this, RemoteControlReceiver.class);
जो acc नहीं है कोई अतिरिक्त पैरामीटर ept?
कोई विचार इस सीमा के आसपास कैसे काम करना है?
नोट: अगर मैं एक पैरामीटर के साथ एक निर्माता होने के रूप में RemoteControlReceiver
परिभाषित करने की कोशिश, मैं निम्नलिखित अपवाद प्राप्त करते हैं:
E/AndroidRuntime(2836): java.lang.RuntimeException: Unable to instantiate receiver com.example.RemoteControlReceiver: java.lang.InstantiationException: can't instantiate class com.example.RemoteControlReceiver; no empty constructor
Caused by:
E/AndroidRuntime(2836): Caused by: java.lang.InstantiationException: can't instantiate class com.example.RemoteControlReceiver; no empty constructor
E/AndroidRuntime(2836): at java.lang.Class.newInstanceImpl(Native Method)
E/AndroidRuntime(2836): at java.lang.Class.newInstance(Class.java:1319)
E/AndroidRuntime(2836): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2205)
तो यह स्पष्ट है कि इस नए registerMediaButtonEventReceiver आवश्यकता (Android 4.1 में प्रस्तुत) खाली कन्स्ट्रक्टर की अपेक्षा करता है।
क्या इस के आसपास काम करने का कोई तरीका नहीं है?
उदाहरण के लिए, वास्तविक रिमोट कंट्रोल रिसीवर ऑब्जेक्ट का संदर्भ प्राप्त करने का कोई तरीका है (तत्काल अप्रत्यक्ष रूप से mAudioManager.registerMediaButtonEventReceiver()
के माध्यम से)? ताकि मैं के बाद RemoteControlReceiver के डेटा-सदस्य को सेट करने के लिए एक्सेसर का उपयोग कर सकूं, इसे तुरंत चालू किया गया है?
आप ब्रॉडकास्ट रेसियर को ऑनस्यूम/ऑनक्रेट ऑफ द एक्टिविटी में बना और पंजीकृत कर सकते हैं और अंदर/ऑनस्टॉप पर पंजीकरण रद्द कर सकते हैं। इस तरह से वर्तमान गतिविधि अपने जीवनकाल का ख्याल रख सकती है और रिसीवर अपने कंटेनर (गतिविधि) से संवाद करने में सक्षम होना चाहिए। –
@ सुदर्शनमलन मैंने पहले ही यह कोशिश की है। यह [केवल एंड्रॉइड 2.x में काम करता है] (http://stackoverflow.com/questions/15058743/how-do-i-register-in-manifest-an-inner-media-button-broadcastreciver#comment21174031_15058783)। यह 4.1 में काम नहीं करता है। मुझे किसी भी तरह से 'रिमोट कंट्रोल रिसीवर' (ब्रॉडकास्ट रिसीवर!) को MyCustomActivity के बारे में जानने में सक्षम होना चाहिए। धन्यवाद। – an00b
यह एक कठिन है लेकिन यहां एक विचार है: क्या आप [अतिरिक्त] (http://stackoverflow.com/a/14383023/418055) को इरादे पर प्राप्त कर सकते हैं? या इस [ग्लोबल वैरिएबल चाल] का उपयोग करें (http://stackoverflow.com/a/6980006/418055)? –