2011-10-06 16 views
6

Android uygulamamda paylaşım işlevlerini uyguluyorum. Metin türü bir iletiyi paylaşmak için zaten bir amaç seçiciyi entegre ettim. Şimdi, iki kısayol oluşturmak istiyorum: biri, kullanıcının Facebook yayın sayfasına erişmek, diğeri de Twitter gönder sayfasına erişmek için. ": (// kelime fb) ADB kabuk komutunu kullanarak ama "yayımlamak"(çözemiyorum launch facebook app from other app ve doğru sözcüğü bulmaya çalıştılar: Facebook ve Twitter uygulamaları için kısayollar sayfaları yayınla

bu yararlı konuyu buldum (seçicinizden yapın) yayınlama "," gönder "," paylaş "," paylaşım "çalışmıyor).

Ardından Facebook veya Twitter'ı tıklattığımda, amaçlanan amaçtaki (Log aracılığıyla) oluşturulan amacı yakalamaya çalıştım. Buldum:

"Başlangıç: niyet {act = android.intent.action.SEND tipik = metin/düz flg = 0x3000000 cmp = com.twitter.android/.PostActivity (ekstra vardır)} PID 17575 den" Facebook için ve

"Başlatma: Niyet {act = android.intent.action.SEND typ = text/düz flg = 0x3000000 cmp = com.facebook.katana/.ShareLinkActivity (var ekstreler var)} pid 17575'den" Heyecan.

Intent twitterIntent = new Intent(Intent.ACTION_VIEW); 
twitterIntent.setAction("android.intent.action.SEND"); 
twitterIntent.setFlags(0x3000000);     
twitterIntent.setType("text/plain");  
twitterIntent.setComponent(new ComponentName("com.twitter.android", ".PostActivity")); 
twitterIntent.putExtra(Intent.EXTRA_TEXT, getString(R.string.share_text)); 
startActivity(twitterIntent); 

Ama günlükleri bakmak bile:

Intent fbIntent = new Intent(Intent.ACTION_SEND); 
fbIntent.setType("text/plain"); 
fbIntent.setFlags(0x3000000); 
fbIntent.setComponent(new ComponentName("com.facebook.katana", ".ShareLinkActivity")); 
fbIntent.putExtra(Intent.EXTRA_TEXT, getString(R.string.share_text)); 
startActivity(fbIntent); 

Ben de bu yolu denedim:

I (düğmeleri onClick() yöntemleri üzerinde) Aşağıdaki kodları ile bu amaçları yarattı Aynı hiçbir şey olmuyor.

Herhangi bir fikrin var mı?

+0

neyin "0x3000000 "? – NitZRobotKoder

cevap

9

SetComponent yerine setClassName kullanmalısınız.

intent.setClassName("com.facebook.katana", "com.facebook.katana.ShareLinkActivity"); 

intent.setClassName("com.twitter.android", "com.twitter.android.composer.ComposerActivity"); 

Not: Yeni Heyecan versiyonları (yerine 'com.twitter.android.PostActivity' bağımsız) 'com.twitter.android.composer.ComposerActivity' kullanıyor

+0

Bunu yapmanın kolay bir yolu olduğunu biliyordum! Çok teşekkürler @Jompis, mesajınız beni kurtardı! – Noneu

+0

AMAZING, işe yarıyor! – NullPointerException

+1

Sınıf adını sadece twitter uygulamasını açmak isteyen var mı? intent.setClassName ("com.twitter.android", "com.twitter.android"); Görünüşe göre bu işe yaramıyor. – SoH

İlgili konular