2011-06-08 24 views
37

मेरे पास दो एप्लिकेशन हैं जो एक ही सामग्री प्रदाता का उपयोग करते हैं, लेकिन मैं एक ही सामग्री प्रदाता दोनों अनुप्रयोगों में नहीं डाल सकता- यह INSTALL_FAILED_CONFLICTING_PROVIDER त्रुटि दिखाता है। इसलिए मैंने अपने कंटेंट प्रदाता को तीसरे। एपीके में रखा है और इसे दो अनुप्रयोगों से इस्तेमाल किया है और यह अच्छी तरह से काम कर रहा है।सामग्री प्रदाता INSTALL_FAILED_CONFLICTING_PROVIDER (सामग्री प्रदाता को एक अलग एपीके के रूप में स्थापित करना)

अब समस्या यह है- सामग्री प्रदाता एपीके को डिवाइस पर स्थापित किए जा सकने वाले किसी भी दो ऐप्स से पहले स्थापित किया जाना चाहिए। अन्यथा, यह दिखाता है कि प्रदाता के दौरान प्रदाता को त्रुटि नहीं मिली है।

तो, मैं कैसे सुनिश्चित कर सकता हूं कि प्रदाता एपीके स्थापित किया गया है इससे पहले कि किसी अन्य एपीके स्थापित हो जाएं?

क्या सामग्री प्रदाता एपीके को अलग-अलग अन्य एपीके के साथ अलग करने का कोई तरीका है, इसलिए उन्हें दो अनुप्रयोगों के रूप में एक साथ स्थापित किया जाएगा और INSTALL_FAILED_CONFLICTING_PROVIDER त्रुटि नहीं दिखाई देगी?

मुझे दोनों एप्लिकेशन के साथ सामग्री प्रदाता एपीके मर्ज करने की आवश्यकता है, क्योंकि उपयोगकर्ता दोनों एप्लिकेशन इंस्टॉल नहीं कर सकता है या दोनों को एक ही डिवाइस पर इंस्टॉल कर सकता है।

+1

यह एक बहुत ही रोचक समस्या है। इसी तरह एक समझाया गया है: http://stackoverflow.com/questions/3578751/conflicting-content-providers। मुझे यकीन नहीं है कि आपके लिए वहां कोई जवाब है या नहीं, इसलिए मैंने इसे एक टिप्पणी के रूप में क्यों जोड़ा। यह आपको उस समस्या की याद दिलाता है जो आपको हेडर फाइलों के साथ सी/सी ++ में मिलता है, और आप अपनी प्रतिक्रिया के लिए # ifndef/# परिभाषित – plainjimbo

+1

@ जेम्स धन्यवाद का उपयोग क्यों करते हैं। मैंने आपके द्वारा उल्लिखित विषय में दिए गए समाधान के बारे में सोचा, लेकिन मैं कुछ बेहतर खोज रहा हूं। प्रदाता को एक अलग एपीके में डालकर इसे इंस्टॉल करना पहले त्रुटि INSTALL_FAILED_CONFLICTING_PROVIDER को हल करता है और मुझे लगता है कि दो प्रदाताओं को रखने से बेहतर है। लेकिन मुझे यह सुनिश्चित करने की ज़रूरत है कि प्रदाता एपीके पहले स्थापित हो या किसी भी तरह से एपीक्स को मर्ज करें जैसा मैंने उल्लेख किया है। – Imon

+0

@CommonsWare http://stackoverflow.com/a/10791144/94363 – rds

उत्तर

13

एक समाधान जो मैं सोच सकता हूं, विभिन्न पैकेजिंग के आंतरिक रूप से दोनों अनुप्रयोगों के सामग्री प्रदाता का हिस्सा बनाते हैं। एंड्रॉइड का उपयोग करके इसे निर्यात करें: निर्यात = सत्य। हालांकि दोनों एक ही कोड का उपयोग कर रहे हैं।

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

अपने कोटेन्ट प्रदाता को हर किसी से बचाने के लिए, आप इसे सुरक्षित रखने के लिए एक कस्टम अनुमति परिभाषित कर सकते हैं, ताकि आपके एप्लिकेशन केवल इसका उपयोग कर सकें या आप सामग्री प्रदाता तक पहुंचने के लिए कुछ गुप्त कुंजी जैसे कुछ कस्टम प्रमाणीकरण भी डाल सकते हैं। आप सामग्री प्रदाता के सभी तरीकों में यह प्रमाणीकरण कोड प्राप्त कर सकते हैं।

+2

द्वारा एक व्यापक उत्तर भी देखें यह एक संभावित समाधान प्रतीत होता है, लेकिन मुझे उम्मीद नहीं है। शायद एंड्रॉइड में एक के रूप में दो apks पैकेज करने का कोई तरीका नहीं है। – Imon

37

आप AndroidManifest.xml फ़ाइल में android:authorities के मूल्य को बदलकर इसे हल कर सकते हैं। त्रुटि का कारण यह है कि आपके डिवाइस पर स्थापित एक और एप्लिकेशन पहले से ही उसी मान का उपयोग करता है android:authorities के लिए। Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER

परिवर्तन आपके AndroidManifest.xml फ़ाइल में android:authorities का मूल्य किसी अन्य अनुप्रयोग आपके डिवाइस पर इंस्टॉल पहले से ही एंड्रॉयड के लिए है कि एक ही मूल्य का उपयोग करता है: अधिकारियों

0

इसका मतलब है कि आपके फोन में पहले से ही एक ही प्राधिकरण के साथ प्रदाता है, जो विभिन्न अनुप्रयोगों द्वारा पंजीकृत है (आपका दूसरा उदाहरण हो सकता है)। अपने प्रदाता प्राधिकरणों को बदलें। android:authorities और आप जाने के लिए अच्छे हैं।

2

आप फेसबुक एपीआई पंजीकरण संख्या जैसे किसी यूनिक डेटा या दोनों प्रोग्रामों के लिए अपनी मेनिफेस्ट फ़ाइल (AndroidManifest.xml) में ऐसा कुछ उपयोग करते हैं: जिसके लिए पहले से इंस्टॉल किया गया है और इसके लिए आप कोशिश करते हैं और इंस्टॉल नहीं कर सकते हैं।आप की जरूरत है: कुछ इस तरह लगता है और अपने वर्तमान कार्यक्रम के लिए जाँच यह है

  1. प्रयास करें:

android:authorities="com.facebook.app.FacebookContentProvider23473465463573466" android:name="com.facebook.FacebookContentProvider" android:exported="true"/>

  1. जांच करें कि किसी अन्य रूप में dublicate नहीं है प्रोग्राम अगर यह प्रोग्राम है जिसे आप इंस्टॉल करने का प्रयास कर रहे हैं।
संबंधित मुद्दे