6

मैं सेवा के व्यवहार को अनुकूलित करने के लिए एंड्रॉइड मैनिफेस्ट में मेटा-डेटा का उपयोग करना चाहता हूं।क्या एंड्रॉइड मेनिफेस्ट में मेटा-डेटा को पैकेज में निजी रखने का कोई तरीका है?

<service 
    android:name=".SampleService" 
    android:exported="false"> 
    <meta-data 
     android:name="sampleName" 
     android:resource="@string/sampleValue" /> 
</service> 

मेरी सेवा एक पुस्तकालय का हिस्सा है, और यह कुछ इन विशेषताओं में संवेदनशील डेटा डाल सकता है जब वे मेरी सेवा का उपयोग संभव है। क्या ये मेटा-डेटा विशेषताएँ पैकेजमैनेजर के माध्यम से फोन पर अन्य स्थापित पैकेजों के लिए दृश्यमान हैं, भले ही सेवा निर्यात नहीं की जाती है?

उत्तर

9

क्या ये मेटा-डेटा विशेषताएँ पैकेजमैनेजर के माध्यम से फोन पर अन्य स्थापित पैकेजों के लिए दृश्यमान हैं, भले ही सेवा निर्यात नहीं की जाती है?

हां। मैनिफेस्ट में सब कुछ, और आपके संसाधनों और संपत्तियों में सब कुछ, डिवाइस पर सभी अनुप्रयोगों के लिए सुलभ है।

1

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

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

PackageManager pm = getPackageManager(); 
PackageInfo info = pm.getPackageInfo("test.package", PackageManager.GET_META_DATA|PackageManager.GET_SERVICES); 
int resourceId = info.services[0].metaData.getInt("sampleName"); 
String resourceValue = pm.getResourcesForApplication("test.package").getString(resourceId); 
+0

ऐसा करने से अन्य एप्लिकेशन के लिए पैकेज प्रबंधक की सार्वजनिक पेशकश से जानकारी बाहर कर सकते हैं, लेकिन यह पता लगाने के लिए और apk खोलते हैं, तो द्विआधारी प्रकट निकालने, और सादे पाठ में इसे वापस demangle काफी सरल है - के साथ स्थिति संसाधन समान होना चाहिए। किसी को हमेशा आगे बढ़ने में सक्षम होने पर भरोसा नहीं करना चाहिए, लेकिन किसी को निश्चित रूप से ** ** किसी और पर भरोसा नहीं करना चाहिए * नहीं * ऐसा करने में सक्षम होना चाहिए। –

+0

क्या यह सभी डीएक्स फाइलों, संपत्तियों और संसाधनों के लिए सच नहीं है? – Alan

+0

हां, लेकिन कोड में एकत्र किए गए मानों को मानक तरीके से संग्रहीत मानों की तुलना में थोड़ा अधिक विशिष्ट प्रयास की आवश्यकता होगी। –

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

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