तक पहुंच प्रतिबंधित करें मुझे एक पोस्ट नहीं मिला जो मेरे जैसा ही प्रतिबंध मांगता है।सामग्री प्रदाता
मेरे पास एक ऐसा एप्लिकेशन है जो एक सामग्री प्रदाता (इसे मुख्य एप्लिकेशन कहते हैं) प्रदान करता है अन्य अनुप्रयोगों (उन्हें क्लाइंट एप्लिकेशन कॉल करें)। मैं केवल डालने के लिए क्लाइंट अनुप्रयोगों से सामग्री प्रदाता तक पहुंच प्रतिबंधित करना चाहता हूं और शायद क्वेरी विधियां।
मैं नहीं है क्या करना चाहते हैं:
- सामग्री प्रदाता निजी क्योंकि मुख्य लक्ष्य क्लाइंट अनुप्रयोग के लिए एक डेटाबेस प्रदान करने के लिए है।
- क्लाइंट अनुप्रयोगों के हस्ताक्षर के साथ पहुंच प्रतिबंधित करें क्योंकि कोई भी क्लाइंट एप्लिकेशन लिखने में सक्षम होना चाहिए जो मुख्य एप्लिकेशन प्लेटफ़ॉर्म का उपयोग करता है।
सबसे स्पष्ट समाधान जो मैं देखता हूं वह दो सामग्री प्रदाता लिखना है, जिसमें मुख्य एप्लिकेशन के पूर्ण पहुंच निजी और एक प्रतिबंधित सार्वजनिक है। लेकिन मुझे लगता है कि यह निश्चित रूप से एक उचित तरीका नहीं है।
इस Google groups post के अनुसार, मैं सामग्री प्रदाता में Binder.getCallingUid()
का उपयोग करने के लिए कॉल कर रहा हूं यह पता लगाने के लिए कि क्या कॉल मुख्य एप्लिकेशन से आता है या नहीं। इसलिए मैं अपडेट और विधियों को हटा सकता हूं यदि कॉल मुख्य एप्लिकेशन से नहीं आती है।
तुलना करने के लिए मैं मुख्य आवेदन यूआईडी कैसे प्राप्त कर सकता हूं? और यदि यह संभव है, तो क्या यह समाधान सुरक्षित है?
आपकी सलाह के लिए धन्यवाद।
यदि मैं सही ढंग से समझता हूं, तो सामग्री प्रदाता घटक वाला एप्लिकेशन केवल लेखन पहुंच वाला होना चाहिए। उसमें सामग्री प्रदाता इंटरफ़ेस के माध्यम से बिना कार्यक्षमता का उपयोग क्यों नहीं किया जा सकता है? उस स्थिति में सामग्री प्रदाता केवल क्वेरी इंटरफ़ेस का समर्थन करेगा। – Sameer
दुर्भाग्यवश, क्लाइंट अनुप्रयोगों द्वारा आवश्यक मुख्य पहुंच सम्मिलन है। इसलिए उन्हें लेखन पहुंच भी चाहिए। लेकिन आप सही हैं कि मुख्य प्रदाता सामग्री प्रदाता का उपयोग करने की आवश्यकता नहीं है लेकिन यह बहुत जटिलता और रखरखाव में वृद्धि करेगा। – FabiF
अच्छी तरह से, अभी भी एक ही बिंदु।मुख्य अनुप्रयोग सामग्री प्रदाता इंटरफ़ेस के बिना सीधे आवेषण, अद्यतन और हटा देता है। सामग्री प्रदाता केवल सम्मिलित और क्वेरी इंटरफ़ेस प्रदान करता है। – Sameer