2012-01-31 4 views
13

मैं सभी ऐप्स भेजें इरादे से निपटने में सक्षम एक फोन पर स्थापित की सूची प्राप्त करने कोशिश कर रहा हूँ में प्रदर्शित करने के लिए करने में सक्षम ऐप्स की सूची प्राप्त करें। मैं वर्तमान में Intent.createChooser का उपयोग करके इस स्थिति से निपटने कर रहा हूँ, लेकिन यह नहीं है कि मैं क्या, को प्राप्त करने के रूप में मैं उन्हें अपने गतिविधि में एक दृश्य में प्रदर्शित करने के लिए ऐप्लिकेशन की सूची में पहुँच प्राप्त करने में सक्षम होना चाहते हैं कोशिश कर रहा हूँ एक तरह से समान में एंड्रॉइड स्टॉक गैलरी ऐप उन्हें कैसे दिखाता है और स्पिनर संवाद में नहीं।भेजें इरादे से निपटने के लिए एक दृश्य (नहीं एक पॉपअप संवाद)

स्क्रीनशॉट यहाँ उपलब्ध है: http://i.stack.imgur.com/0dQmo.jpg

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

उत्तर

18

कॉल queryIntentActivities()PackageManager पर, एक ACTION_SENDIntent कॉन्फ़िगर किया गया के रूप में आप createChooser() (अर्थात, है MIME प्रकार, Uri, आदि) के साथ उपयोग कही जा सकती। यह आपको सभी मैचों कि चयनकर्ता में प्रदर्शित होगी की एक सूची दे देंगे। फिर आप वास्तविक गतिविधि लॉन्च करने के लिए उपयोगकर्ता के चयन का उपयोग कर सकते हैं।

Here is a sample project जो होम स्क्रीन-स्टाइल लॉन्चर बनाने के लिए इसका उपयोग करता है।

+0

धन्यवाद संभोग इस महान काम कर रहा है;) – Pierre

+1

@CommonsWare वहाँ एक रास्ता) एक आवेदन से विशिष्ट कार्रवाई (मेरे मामले ACTION_SEND में मिलता है और putExtra ("myMessage", shareMessage) की तरह कुछ करने के लिए है, ताकि उस की साझा कार्रवाई मेरे शेयर मैसेज के साथ पॉप्युलेट हो जाए। मैं एप्लिकेशन प्राप्त करने तक पूरा कर सकता हूं जो ACTION_SEND को संभाल सकता है। धन्यवाद –

+0

@ Archie.bpgc: अतिरिक्त के संबंध में, उपलब्ध है और * संभवतः * समर्थित के लिए 'ACTION_SEND' के लिए दस्तावेज़ देखें। प्रत्येक ऐप जो गतिविधि 'ACTION_SEND' को प्रतिसाद दे सकती है, उसकी पसंद यह है कि यह किसी दिए गए अतिरिक्त का समर्थन करेगी या नहीं। और चूंकि अनुप्रयोगों कार्रवाई की जरूरत नहीं है - गतिविधियों है - मैं अपनी टिप्पणी के पहले भाग समझ में नहीं आता। – CommonsWare

5
List<String> packages = new ArrayList<>(); 

Intent sendIntent = new Intent(); 
sendIntent.setAction(Intent.ACTION_SEND); 
sendIntent.putExtra(Intent.EXTRA_TEXT, "test"); 
sendIntent.setType("text/plain"); 
List<ResolveInfo> resolveInfoList = getPackageManager() 
    .queryIntentActivities(sendIntent, 0); 

for (ResolveInfo resolveInfo : resolveInfoList) { 
    packages.add(resolveInfo.activityInfo.packageName); 
} 
संबंधित मुद्दे