2012-06-06 18 views
29

मैं कस्टम एक्शन का उपयोग करके अपने ऐप में एक गतिविधि शुरू करना चाहता हूं। मुझे कुछ जवाब मिल गए हैं, लेकिन जो कुछ भी मैं कोशिश करता हूं वह java.lang.RuntimeException फेंकता है कि कोई गतिविधि इरादा {act = com.example.foo.bar.YOUR_ACTION} को संभालने के लिए नहीं मिली है।कस्टम एक्शन का उपयोग शुरू करें गतिविधि

यह मेरा मैनिफ़ेस्ट फ़ाइल में गतिविधि है:

<activity 
    android:name=".FeedbackActivity" > 
    <intent-filter> 
     <action android:name="com.example.foo.bar.YOUR_ACTION" /> 
    </intent-filter> 
</activity> 

और यह कैसे मैं गतिविधि शुरू कर रहा है:

Intent intent = new Intent("com.example.foo.bar.YOUR_ACTION"); 
startActivity(intent); 

किसी भी मदद की बहुत सराहना की जाएगी।

+0

अपना मेनिफेस्ट – FoamyGuy

+0

पोस्ट करें मुझे लगता है कि आपको मैक्स के जवाब को सही (एक अन्य उपयोगकर्ताओं के संदर्भ में) के रूप में चिह्नित करना चाहिए – Kzar

+0

दरअसल, स्वीकार किए गए उत्तर को चिह्नित करने का अर्थ यह है कि यह ओपी के लिए काम करता है, जरूरी नहीं कि यह हर किसी के लिए सबसे अच्छा जवाब है - यही वह है जो उपरोक्त है। – Cullub

उत्तर

22

मुझे लगता है कि आप अपना इरादा गलत बना रहे हैं। इस तरह का प्रयास करें:

String CUSTOM_ACTION = "com.example.foo.bar.YOUR_ACTION"; 

//Intent i = new Intent(this, FeedBackActivity.class); // <--- You might need to do it this way. 
Intent i = new Intent(); 
i.setAction(CUSTOM_ACTION); 

startActivity(i); 
+0

मुझे अब अपवाद नहीं मिल रहा है हालांकि यह उपयोगकर्ता को कार्रवाई को पूरा करने के लिए एक ऐप चुनने के लिए स्क्रीन दिखाता है। –

+0

सूची में आपका ऐप है? – FoamyGuy

+0

आपके कोड में 'listIntent' क्या है? क्या आपका मतलब है 'मैं? – Karu

80

मैं आपको क्या चाहिए आपका मंतव्य फिल्टर, जैसे करने के लिए डिफ़ॉल्ट श्रेणी जोड़ने के लिए है लगता है।

<activity 
    android:name=".FeedbackActivity" > 
    <intent-filter> 
     <action android:name="com.example.foo.bar.YOUR_ACTION" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

अधिक जानकारी के लिए this answer देखते हैं।

+3

को कॉल करने जैसा ही है, यह सही उत्तर है और इसे चिह्नित किया जाना चाहिए। – David

+0

हां! धन्यवाद दोस्त :) – yahya

1

डिफ़ॉल्ट रूप से जोड़ें और इरादा-फ़िल्टर श्रेणी जोड़ें।

लागू इरादा पूरी तरह से काम करता है और कई मामलों में वर्ग-नाम का उपयोग करने से सेवा/गतिविधि को कॉल करने के लिए इरादे-क्रिया के साथ एक अंतर्निहित इरादा का उपयोग करना बेहतर होता है।

उचित संदर्भ के साथ startActivty()/startService() से पहले आप पैकेज प्रबंधक वर्ग से 'queryIntentActivities(Intent intent, int flags)' इस विधि का उपयोग कर सकते हैं।

यह गतिविधि प्रबंधक (गतिविधियों को लॉन्च करने के लिए ज़िम्मेदार) की सहायता करता है यह जांचने के लिए कि एंड्रॉइड सिस्टम आपके साथ कोई मैच प्राप्त कर रहा है या नहीं।

यदि यह कोई सूची आकार 0 या अन्य> 0 देता है।

इससे आप यह भी जांच सकते हैं कि आपका ऐप कॉल कर रहा है या नहीं, और इस मामले में यदि आपका ऐप इंस्टॉल नहीं है/कुछ समस्या है, तो यह क्रैश नहीं होगा लेकिन लॉग में चेतावनी फेंक देगा। ऐप लॉन्च नहीं होने के अलावा उपयोगकर्ताओं को कोई बड़ी परेशानी नहीं होगी।

(यदि टूर ऐप क्रैश हो तो उपयोगकर्ता आपको कभी माफ नहीं करेंगे)।

आशा है कि इससे मदद मिलेगी !!! हैप्पी कोडिंग। :)

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