2015-09-07 14 views
5

स्पष्ट किया जाना चाहिए।क्यों सेवा आशय जब हम निम्नलिखित की तरह एक सेवा शुरू आशय

ऐसा क्यों है। एंड्रॉइड को स्पष्ट होने के लिए सेवा के इरादे की आवश्यकता क्यों है?

+1

सुरक्षा ... यदि एक ही इरादे के लिए प्रतिक्रिया करने वाली कई गतिविधियां उपयोगकर्ता को चुनने के लिए कहा जाता है ... अब, कल्पना करें कि यह सेवाओं के लिए कैसे काम कर सकता है (मैं नहीं कर सकता) ... यही कारण है कि आपको क्यों करना है बिंदु सटीक घटक नाम – Selvin

+0

http://developer.android.com/guide/components/intents-filters.html – Sree

+1

@selvin यह प्री v5 (मुझे विश्वास है) संस्करणों के लिए काम करता है ताकि यह काम कर सके ... – pskink

उत्तर

1

जब आप गतिविधि के विपरीत अंतर्निहित इरादे से सेवा शुरू करते हैं, तो कोई उपयोगकर्ता इंटरफ़ेस शामिल नहीं है। जब एकाधिक सेवाएं किसी इरादे को संभाल सकती हैं, एंड्रॉइड यादृच्छिक रूप से एक का चयन करता है; उपयोगकर्ता को पर कोई सेवा नहीं दी गई है।

दुर्भावनापूर्ण सेवा कॉलिंग एप्लिकेशन से जुड़ी है, तो हमलावर मनमाने ढंग से दुर्भावनापूर्ण डेटा वापस कर सकता है या अनुरोधित कार्रवाई किए बिना केवल एक सफल परिणाम लौटा सकता है। दुर्भावनापूर्ण सेवा डेटा चोरी कर सकती है और अनुरोधित कार्रवाइयों को पूरा करने के बारे में झूठ बोल सकती है।

0

"यह सुनिश्चित करने के लिए कि आपका ऐप सुरक्षित है, हमेशा अपनी सेवा शुरू करने या बाध्य करने के दौरान एक स्पष्ट इरादा का उपयोग करें और सेवा के लिए इच्छित फ़िल्टर घोषित न करें।" (From Android developer) ऐसा होना चाहिए क्योंकि इसके बिना अन्य ऐप्स आपकी शुरुआत कर सकते हैं सेवा और आदि

0

एक छोटी सी इस के लिए और अधिक: तथापि नोट करने के लिए

Intent intent = new Intent(); 
intent.setPackage("com.action.ServicePackageName"); 
intent.setAction("com.action.ActionNameOfService"); 
bindService(intent, yourServiceConectionObject, Service.BIND_AUTO_CREATE); 
//or 
//startService(intent); 

प्वाइंट कि सेवा स्थानीय सेवा है अगर है: हम अंतर्निहित आशय (क्रिया नाम के साथ) का उपयोग करना चाहते हैं, तो हम इस तरह setPackageName उपयोग करने के लिए ; आपको स्पष्ट उद्देश्य का उपयोग करना चाहिए क्योंकि सेवा कक्षा आपके लिए उपलब्ध है। हम ऊपर दिखाए गए तरीके से भी उसी तरह उपयोग कर सकते हैं लेकिन कुछ उत्तरों में उल्लिखित कारणों के लिए स्पष्टीकरण का उपयोग करने की सिफारिश की जाती है। रिमोट सर्विसेज (अन्य ऐप्स में सेवाएं) के लिए ; चूंकि हमारे पास सेवा कक्षा हमारे पास उपलब्ध नहीं हो सकती है; हमें केवल इस तरह से सेवा करना है।

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