2015-09-10 8 views
5

मेरे पास दो एप्लिकेशन हैं, एक मुख्य ऐप के रूप में काम करता है, और दूसरा एक सेवा के रूप में।एंड्रॉइड - दो अनुप्रयोगों के बीच संसाधन साझा करें

<service android:name=".services.FirstService"> 
    <intent-filter> 
     <action android:name="ch.service.action.FIRST_SERVICE"/> 
    </intent-filter> 
</service> 

और मुख्य अनुप्रयोग में, मैं एक सेवा शुरू की तरह:

Intent intent = new Intent("ch.service.action.FIRST_SERVICE"); 
startService(intent); 

यहाँ, मैं नकल करने के लिए है "ch.service सेवा ऐप्लिकेशन मेनिफेस्ट फ़ाइल में, मैं की तरह एक सेवा को कॉन्फ़िगर .action.FIRST_SERVICE "। मैं इससे कैसे बच सकता हूं? मैं कुछ सामान्य स्थिरांक कैसे साझा कर सकता हूं, उदाहरण के लिए सेवा ऐप में से किसी एक को परिभाषित किया जा सकता है, और मुख्य ऐप में पुनर्प्राप्त किया जा सकता है?

किसी भी उत्तर की सराहना की जाती है।

उत्तर

0

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

+0

का उपयोग करें अन्य तरीका है, जो नीचे पोस्ट किया गया है ... कृपया जांचें – Kushal

0

यदि आप दो अनुप्रयोगों को एक साथ विलय कर सकते हैं, तो निश्चित रूप से आप जो कुछ भी चाहते हैं उसे साझा कर सकते हैं। दरअसल एक आवेदन में कई सेवा और मंशा सेवा हो सकती है।

यदि आपके पास एक एप्लिकेशन को दो में अलग करने का कोई कारण है, या वे दो अप्रासंगिक ऐप्स हैं, तो संवाद करने के इरादे से हमेशा कक्षा नाम की आवश्यकता होती है जो मुझे लगता है कि अपरिहार्य है।

1

आपको अपने दोनों आवेदनों के बीच SharedPreference का उपयोग करना चाहिए। अपने सेवा आवेदन में आप write चाहिए Stringch.service.action.FIRST_SERVICESharedPreference रहे हैं:

SharedPreference sharedPreferences = getSharedPreferences("any_name", Context.MODE_WORLD_READABLE); 
SharedPreference.Editor mEditor = sharedPreferences.edit(); 
mEditor.putString("service_string","ch.service.action.FIRST_SERVICE"); 
mEditor.commit(); 

आप अन्य अनुप्रयोग से मूल्य प्राप्त करना चाहते हैं, तो आपको पहले अपने सेवा आवेदन की Context प्राप्त करने की आवश्यकता:

Context mServiceAppContext = createPackageContext("com.example.service_app_package", 0); 

आप mServiceAppContext का उपयोग स्ट्रिंग मान प्राप्त करने के लिए कर सकते हैं:

SharedPreference sharedPreferences = mServiceAppContext.getSharedPreferences("any_name", Context.MODE_WORLD_READABLE);  
// Context.MODE_WORLD_READABLE is important, it makes the value readable across other applications 

sharedPreferences.getString("service_string", /* default value */ "service_string","ch.service.action.FIRST_SERVICE"); 

बेस्ट Explaination पर दिया जाता है: http://thedevelopersinfo.com/2009/11/25/getting-sharedpreferences-from-other-application-in-android/

0

वहाँ एक ही बात संग्रह करने के लिए अलग अलग तरीके हैं, लेकिन क्यों नहीं इसे सरल रखें:

  1. आप सेवा परियोजना के लिए एक संदर्भ है? यदि ऐसा है, तो क्यों न केवल सेवा प्रोजेक्ट में एक सेटिंग बनाएं और उद्देश्य को बनाते समय इसे मुख्य पर पुन: उपयोग करें:

    इरादा इरादा = नया इरादा (cxt.getString ("service_string", डिफ़ॉल्ट मान);

या, जैसा कि मैंने अपने ऐप्स में किया था, बस सर्विस क्लास पर एक सार्वजनिक स्थिर अंतिम चर बनाएँ और इसे मुख्य ऐप से एक्सेस करें?

public static final String ACTION_FIRST_SERVICE = "ch.service.action.FIRST_SERVICE"; 
  1. आप सेवा परियोजना के लिए एक संदर्भ नहीं है, तो और जोड़ने के लिए नहीं करना चाहते हैं, सबसे अच्छा तरीका किसी भी व्यक्ति को बेनकाब करने के लिए है ...या एक lib प्रोजेक्ट बनाएं जो
संबंधित मुद्दे