2011-10-06 182 views
6

我在我的Android應用程序上實現了共享功能。我已經整合了一個意向選擇器來共享文本類型的消息。現在,我想創建兩個快捷方式:一個訪問用戶的Facebook帖子頁面,另一個訪問他的twitter帖子頁面。 (作爲選擇器)Facebook和Twitter應用程序發佈頁面的快捷方式

我發現這個有用的主題:launch facebook app from other app並嘗試使用ADB shell命令找到正確的單詞(fb:// word),但我無法弄清楚(「發佈」,「發佈「,」發佈「,」分享「,」分享「不起作用)。

然後,當我點擊Facebook或Twitter時,我試圖捕獲意向選擇器上創建的意圖(通過日誌)。我發現:

「開始:意向{行動= android.intent.action.SEND典型值= text/plain的FLG = 0x3000000 CMP = com.twitter.android/.PostActivity(有演員)}從PID 17575」對於Facebook,以及

「起始:意圖{act = android.intent.action.SEND typ = text/plain flg = 0x3000000 cmp = com.facebook.katana/.ShareLinkActivity(has extras)} from pid 17575」for推特。

我創建了以下代碼的意圖(上的按鈕onClick()方法):

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); 

我也試過這樣:

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); 

但即使日誌看同樣沒有任何反應

有什麼想法?

+0

什麼「0x3000000 「? – NitZRobotKoder

回答

9

我想你應該使用setClassName而不是setComponent。

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

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

注意:最近微博版本使用 'com.twitter.android.composer.ComposerActivity'(而不是 'com.twitter.android.PostActivity')

+0

我知道有一個簡單的方法來做到這一點!非常感謝你@Jompis,你的帖子救了我! – Noneu

+0

令人驚歎,它的作品! – NullPointerException

+1

有人會知道類名只能打開twitter應用程序嗎? intent.setClassName(「com.twitter.android」,「com.twitter.android」);顯然這不起作用。 – SoH

相關問題