2011-04-21 10 views
30

हाल ही में मेरे पास एक साक्षात्कार था जिसमें सवाल पूछा गया था कि "आप दो स्थापित ऐप्स या एपीके के बीच डेटा कैसे साझा कर सकेंगे?"दो अनुप्रयोगों के बीच डेटा साझाकरण

मेरे पास इस प्रश्न का कोई जवाब नहीं था। क्या कोई ऐसा करने का तरीका निर्धारित करने में मेरी सहायता कर सकता है ...

उत्तर

22

ContentProviders एप्लिकेशन के बीच डेटा साझा करने के लिए एक अच्छा तरीका है।

+2

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

+0

[यह एक अच्छा सरल उदाहरण है] (http://marakana.com/forums/android/examples/64.html), एक सिस्टम डेटासोर्स का उपयोग करके जो सभी ऐप्स के लिए उपलब्ध है। अच्छा पकड़ - [डाउनलोड नमूना] (http://marakana.com/static/tutorials/ContentUserDemo.zip) –

+0

@BradParks लिंक मृत –

4

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

अन्य विकल्प ... एंड्रॉयड विशिष्ट - रिमोट सेवाओं जनरल - टीसीपी/आईपी कनेक्शन जनरल - एसडी कार्ड

देखभाल पर किसी स्थान पर लेखन एक विशेष विधि के बारे में अधिक सुनने के लिए?

इसके अलावा आज एक साक्षात्कार के लिए इस सवाल का चोरी :)

0

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

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

4

आप अनुप्रयोगों के बीच डाटा साझा करने, सुनिश्चित करें कि आप एक ही कुंजी के साथ हस्ताक्षर कर चाहते हैं:

कोड/डेटा अनुमतियां के माध्यम से साझा करने - एंड्रॉयड प्रणाली हस्ताक्षर आधारित अनुमतियों प्रवर्तन प्रदान करता है, इसलिए वह एप्लिकेशन कि निर्दिष्ट प्रमाणपत्र के साथ हस्ताक्षरित किसी अन्य एप्लिकेशन पर कार्यक्षमता का पर्दाफाश कर सकता है। एक ही प्रमाणपत्र के साथ एकाधिक अनुप्रयोगों पर हस्ताक्षर करके और हस्ताक्षर-आधारित अनुमतियों का उपयोग करके, एप्लिकेशन कोड और डेटा को सुरक्षित तरीके से साझा कर सकते हैं।

इस से उद्धृत किया गया है: android developer page about signing

यदि यह डेटा की एक छोटी राशि है कि आप एक आशय के माध्यम से भेज सकते हैं।

+0

क्या आप एक ऐप से दूसरे ऐप में डेटा लाने या पुनर्प्राप्त करने का तरीका बता सकते हैं? यह लिंक हस्ताक्षर करने के बारे में अधिक है। –

16

आवेदन 1 से डेटा भेजें (पूर्व में: एप्लिकेशन 1 पैकेज का नाम "com.sharedpref1" है)।

SharedPreferences prefs = getSharedPreferences("demopref", 
        Context.MODE_PRIVATE); 
      SharedPreferences.Editor editor = prefs.edit(); 
      editor.putString("demostring", strShareValue); 
      editor.commit(); 

आवेदन 2 (आवेदन 1 में साझा पसंद से डेटा प्राप्त करने) में डेटा प्राप्त करें।

try { 
      con = createPackageContext("com.sharedpref1", 0);//first app package name is "com.sharedpref1" 
      SharedPreferences pref = con.getSharedPreferences(
         "demopref", Context.MODE_PRIVATE); 
      String your_data = pref.getString("demostring", "No Value"); 
     } 
    catch (NameNotFoundException e) { 
       Log.e("Not data shared", e.toString()); 
     } 

दोनों आवेदन प्रकट फाइलों में साझा किए समान उपयोगकर्ता आईडी & लेबल जोड़ने,

android:sharedUserId="any string" 
android:sharedUserLabel="@string/any_string" 

दोनों एक ही हैं ... और साझा उपयोगकर्ता लेबल स्ट्रिंग से करना चाहिए।एक्सएमएल

इस उदाहरण की तरह।

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.xxxx" 
android:versionCode="1" 
android:versionName="1.0" 
android:sharedUserId="any string" 
android:sharedUserLabel="@string/any_string"> 
+6

क्या आपको एक ही कुंजी के साथ ऐप्स पर हस्ताक्षर नहीं करना है? – John

+1

बहुत अच्छी तरह से समझाया। यह काम कर रहा है। धन्यवाद दोस्त :-) –

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