2011-11-16 8 views
10

अच्छी तरह से मैंने बहुत कुछ खोजा, लेकिन मुझे एक सटीक उत्तर नहीं मिला कि गतिविधि को कैसे निर्यात किया जाए, इसलिए एक ऐप इसे startActivityforResult से शुरू कर सकता है।कोई गतिविधि कैसे निर्यात करें ताकि अन्य ऐप्स इसे कॉल कर सकें?

मैं इसे कैसे प्राप्त करूं? क्या मुझे कुछ तरीकों से मेनिफेस्ट बदलना है?

<activity android:name="..."> 
    <intent-filter> 
     <action android:name="com.google.zxing.client.android.SCAN" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

तब ही कार्रवाई तार के साथ एक आशय बनाने:

Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
startActivityForResult(intent, code); 

उत्तर

13

आप अपने प्रकट में कोई लक्ष्य फिल्टर घोषित करने के लिए की जरूरत है (मैं बारकोड स्कैनर का निम्नलिखित उदाहरण लिया) एंड्रॉइड को अपनी गतिविधि शुरू करनी चाहिए (या यदि एक ही एक्शन स्ट्रिंग साझा करने वाले एकाधिक ऐप्स हैं तो यह एक ड्रॉप-डाउन बॉक्स दिखाएगा)।

+0

धन्यवाद, मैंने बस बारकोड्सकेनर मैनिफेस्ट के माध्यम से पढ़ा और एक ही चीज़ को पता चला। :] – Force

21

दलामा के जवाब के विकल्प के रूप में, आप वास्तव में निर्यात कर सकते हैं बिना <intent-filter> (कस्टम कार्रवाई के साथ आने की परेशानी के साथ)।

Manifest संपादित अपने Activity टैग तो जैसे में:

<activity 
    android:name=".SomeActivity" 
    .... 
    android:exported="true" /> 

महत्वपूर्ण हिस्सा android:exported="true" है, इस export टैग निर्धारित करता है "या नहीं, गतिविधि अन्य अनुप्रयोगों के घटकों द्वारा शुरू किया जा सकता"। यदि आपके <activity> में <intent-filter> है तो यह टैग स्वचालित रूप से true पर सेट हो गया है, यदि ऐसा नहीं होता है तो यह डिफ़ॉल्ट रूप से false पर सेट होता है। इस प्रक्रिया में गतिविधि आप शुरू करने के लिए कोशिश कर रहे हैं का सही नाम जानने की आवश्यकता होगी के साथ

Intent i = new Intent(); 
i.setComponent(new ComponentName("package name", "fully-qualified name of activity")); 
startActivity(i); 
बेशक

:

फिर शुरू करने के लिए Activity यह करते हैं।

+0

बहुत बहुत धन्यवाद! मेरे ऐप ने अचानक उस त्रुटि को फेंकना शुरू कर दिया, एक अपरिवर्तनीय परिवर्तन करने के बाद भी, मैंने उस परिवर्तन को हटा दिए जाने के बाद भी, लेकिन यह तय किया! – Michael

+0

डिफ़ॉल्ट व्यवहार के बारे में बहुत अच्छा विनिर्देश। एक बाहरी ऐप कह रहा था कि मेरे ऐप की मुख्य गतिविधि निर्यात की गई थी और मुझे समझ में नहीं आया कि जब तक मैं आपका जवाब नहीं पढ़ता ... एक अच्छा दिन है! – Antonino

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

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