2012-02-11 4 views
20

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

public void onReceive(Context context, Intent intent) { 

समस्या यह है कि पैरामीटर संदर्भ अनुप्रयोग संदर्भ है और गतिविधि संदर्भ नहीं है।

क्या एप्लिकेशन संदर्भ का उपयोग करके कोई इरादा शुरू करने का कोई तरीका है?

उत्तर

27

यहाँ नमूना कोड कैसे संदर्भ का उपयोग कर किसी अन्य गतिविधि कॉल करने के लिए, अपनी आवश्यकता के अनुसार सेट झंडा है:

public void onReceive(Context context, Intent intent) { 

    Intent startActivity = new Intent(); 
    startActivity.setClass(context, xxx.class); 
    startActivity.setAction(xxx.class.getName()); 
    startActivity.setFlags( 
       Intent.FLAG_ACTIVITY_NEW_TASK 
       | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 
    context.startActivity(startActivity); 
} 
+17

यह उत्तर, काम करते समय, सवाल का जवाब देने में अस्पष्ट है। एप्लिकेशन संदर्भ के साथ प्रारंभ गतिविधि को कॉल करने के लिए, ध्वज FLAG_ACTIVITY_NEW_TASK ध्वज शामिल करें। संदर्भ से नाम को ऐपकॉन्टेक्स्ट में बदलने के बारे में भी सोचें ताकि यह स्पष्ट हो कि आप किस संदर्भ की अपेक्षा करते हैं। – Alon

-4

यूप, बस संदर्भ का उपयोग करें और उस संदर्भ से startActivity() विधि पर कॉल करें।

+13

यह गलत है; आवेदन संदर्भों को क्रियाकलापों को तब तक शुरू करने की अनुमति नहीं है जब तक कि इरादे में FLAG_ACTIVITY_NEW_TASK ध्वज शामिल न हो। – tophyr