2011-12-29 18 views
5

kullanıyorum:Yalnızca belirli uygulamalarda ACTION_SEND uygulamasına görünür ekleniyor mu?

Intent i = new Intent(Intent.ACTION_SEND); 
i.setType("image/jpeg"); 
(...) 

Uygulamamda oluşturulan resmi paylaşmak. Ben

Intent.createChooser(i, "..."); 
Ben android.intent.action.SEND eylemi için niyet-filtreli aktivite eklemeyi düşünüyordum

yarattığı niyetine (Resmi galeriye kaydedin) özel eylemi eklemek istiyorum, ama bu benim aktiviteyi yapacak Tüm uygulamalar için görünür ve kullanılabilir./* I ("image/*") ve niyet-filtreye

<data android:mimeType="image/foobar"> 

eklemek settype için settype ("image/jpeg") değiştirebilir, ancak bu resmin sorar tüm uygulamalar için görünür benim aktivitesini yapacak .

Arayan paket adıyla (veya başka bir uygulamadan diğerini ayırt edebilecek başka bir şey) eylem görünürlüğünü filtrelemenin bir yolu var mı?

+0

daha iyi bir çözüm Kendi seçici kendi manuel malzeme aracılığıyla doldurulur diyalog ve 'queryIntentActivities aramanın sonuçlarını rulo etmektir() PackageManager'dan. – CommonsWare

cevap

2

Android Bu gereksinim için güzel bir çözüm vardır, hüner Intent.EXTRA_INITIAL_INTENTS geçerli:

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType("image/jpeg"); 

List<Intent> myAddedIntents = new ArrayList<Intent>(); 
Intent myIntent = new Intent(...); 
myAddedIntents.add(myIntent); 

Intent chooserIntent = Intent.createChooser(intent, "Send via:"); 
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, 
     myAddedIntents.toArray(new Parcelable[] {})); 

startActivity(chooserIntent); 
+0

Teşekkürler! Onu deneyeceğim. –

İlgili konular