2011-10-06 150 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

相关问题