2014-11-04 4 views
11

मैं एक जीपीएस ट्रैकिंग सेवा लिखकर अपने ऐप में जीपीएस ट्रैकिंग कार्यक्षमता जोड़ने की कोशिश कर रहा हूं। मैं Google Play सेवाओं के माध्यम से ऐसा करने के तरीके पर एंड्रॉइड डेवलपर सामग्री का पालन कर रहा हूं, लेकिन मैं onConnectionFailed विधि पर फंस गया हूं। मैं Google Play सेवाएं त्रुटि को संभालने के लिए startResolutionForResult पर कॉल करने का प्रयास कर रहा हूं। हालांकि इस विधि के लिए एक पैरामीटर को पहले पैरामीटर के रूप में पारित किया जाना चाहिए, और चूंकि मैं इसे किसी सेवा से बुला रहा हूं, मुझे सच में यकीन नहीं है कि मुझे क्या करना चाहिए।एंड्रॉइड: मैं एक सेवा से startResolutionForResult कैसे कॉल करूं?

मुझे लगता है कि मैं इस सब गलत के बारे में जा रहा हूं और सेवा से इसे संभालने का एक बिल्कुल अलग तरीका है।

उत्तर

1

Google Play सेवाओं के लिए प्रमाणीकरण प्रक्रिया को एक गतिविधि की आवश्यकता है क्योंकि इसे उपयोगकर्ता को यूआई प्रदर्शित करने की आवश्यकता हो सकती है। चूंकि सेवाओं में यूआई नहीं है, इसलिए आपको कनेक्शन सेट अप करने के लिए किसी गतिविधि को संदेश भेजने की आवश्यकता है, फिर सेवा जारी रह सकती है। Example: Communication between Activity and Service using Messaging

+1

इतना अजीब समाधान। जैसा कि googleIO2015 उपयोगकर्ता पर घोषित किया गया था, कुछ अनुमतियां अक्षम कर सकती हैं। और उपयोगकर्ता के लिए यूआई संवाद कैसे दिखाया जाना चाहिए ?! यह अजीब है। – ruX

+0

एम में नई कार्यक्षमता सबसे अधिक संभावना इस व्यवहार को बदल देगा। बने रहें! –

+0

@ClaytonWilkinson यह ठीक से कैसे करें? क्या मुझे गतिविधि में किसी संदेश में 'कनेक्शन रिजल्ट' पास करना चाहिए और फिर गतिविधि कॉल 'startResolutionForResult' में होना चाहिए? क्या वह सेवा द्वारा उपयोग किए गए एपीआई क्लाइंट को कनेक्ट करेगा, या सेवा कॉल 'कनेक्ट()' बाद में होना चाहिए। साथ ही, क्या मैं यह सुनिश्चित कर सकता हूं कि यह सेवा द्वारा उपयोग किए गए एपीआई कनेक्शन में गतिविधि को रिसाव नहीं करता है? – tron

1

आप Status.getResolution() का उपयोग करें और इसके साथ गतिविधि शुरू कर सकते हैं: वहाँ एक अच्छा जवाब यह यहाँ करने के लिए एक तरह से प्रदर्शन है।

सेवा

PendingIntent pI = status.getResolution(); 
mGoogleApiClient.getContext().startActivity(new Intent(mGoogleApiClient.getContext(), SomeActivity.class) 
.putExtra("resolution", pI).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); 

गतिविधि onCreate में: उदाहरण के लिए:

PendingIntent pI = (PendingIntent) (getIntent().getParcelableExtra("resolution")); 
startIntentSenderForResult(pI.getIntentSender(),1,null,0,0,0); 

भी onActivityResult जोड़ने (पूर्णांक requestCode, पूर्णांक resultCode, आशय डेटा) संकल्प का परिणाम प्राप्त करने के लिए

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