2012-11-19 14 views
18

मैं अपने एंड्रॉइड एप्लिकेशन में ContentProvider का उपयोग कर रहा हूं ताकि एप्लिकेशन के बीच डेटाबेस साझा किया जा सके। डेटाबेस को साझा करने के लिए मैं की तरह इस प्रकार AndroidManifest.xml में प्रदाता का उपयोग जोड़ने की जरूरत:निर्यात किए गए सामग्री प्रदाता संभावित संवेदनशील डेटा तक पहुंच प्रदान कर सकते हैं

<provider 
android:name="Contentprovider" 
android:authorities="umb.con.apps.vid" /> 

मैं जोड़ लिया है और सफलतापूर्वक लागू किया लेकिन चेतावनी <provider/> टैग इस "निर्यात सामग्री प्रदाताओं की तरह में दिखा संदेश संभावित रूप से संवेदनशील करने के लिए उपयोग प्रदान कर सकते हैं डेटा"। क्या भविष्य में कोई सुरक्षा समस्या होगी?

उत्तर

36

तुम सिर्फ सामग्री प्रदाता चाहते हैं अपने अनुप्रयोग के भीतर से आंतरिक रूप से पहुँचा जा के लिए, बस प्रकट में नोड में

android:exported="false" 

जोड़ें।

doc से:

झूठी: प्रदाता अन्य एप्लिकेशन हेतु उपलब्ध नहीं है। एंड्रॉइड सेट करें: आपके अनुप्रयोगों में प्रदाता तक पहुंच सीमित करने के लिए निर्यात किया गया = "झूठा"। प्रदाता के रूप में एक ही उपयोगकर्ता आईडी (यूआईडी) वाले अनुप्रयोगों के पास केवल उस तक पहुंच होगी।

, तो दूसरी ओर, अगर तुम सच में अपने डेटा संग्रहण के अन्य ऐप्स के लिए अपने डेटा को बेनकाब करने लेकिन आप भी संवेदनशील डेटा है याद आप एक से अधिक सामग्री प्रदाता हो सकता है और इस तरह सिर्फ बेनकाब चाहते "सार्वजनिक" एक।

+1

यह भी ध्यान दें कि यदि आप 4.2 (एपीआई स्तर 17) को लक्षित कर रहे हैं तो यह डिफ़ॉल्ट है। –

+2

यदि आप किसी अन्य ऐप को डेटा का पर्दाफाश करने के लिए प्रदाता नहीं चाहते हैं तो आप चेतावनी की सवारी कैसे प्राप्त कर सकते हैं? – pat8719

+1

@ pat8719 टूल्स: ignore = "exportedContentProvider" मेनिफेस्ट xml – Ian1971

8

इसके अलावा, अगर आप यकीन है कि आप चेतावनी tools:ignore="ExportedContentProvider"

जोड़ने अपनी सामग्री प्रदाता और चुप्पी तक बाहरी पहुंच की अनुमति देना चाहते हैं जैसे

<provider 
tools:ignore="ExportedContentProvider" 
android:exported="true" 
android:name="Contentprovider" 
android:authorities="umb.con.apps.vid" /> 
+1

अपने 'manifest' टैग में 'tools' के लिए XML नेमस्पेस उपसर्ग शामिल करना सुनिश्चित करें:' ' –

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