【问题标题】:Shortcuts to Facebook and Twitter apps post pagesFacebook 和 Twitter 应用程序发布页面的快捷方式
【发布时间】:2011-10-06 15:36:33
【问题描述】:

我正在我的 Android 应用程序上实现共享功能。我已经集成了一个意图选择器来共享文本类型的消息。现在,我想创建两个快捷方式:一个访问用户的 Facebook 帖子页面,另一个访问他的 Twitter 帖子页面。 (就像选择者所做的那样)

我发现了这个有用的主题:launch facebook app from other app 并尝试使用 ADB shell 命令找到正确的单词 (fb://word),但我不知道 ("publish"、"publishing"、"post" 、“分享”、“分享”不起作用)。

然后,当我单击 Facebook 或 Twitter 时,我尝试在意图选择器上捕获创建的意图(通过日志)。我发现:

“开始:Intent { act=android.intent.action.SEND typ=text/plain flg=0x3000000 cmp=com.twitter.android/.PostActivity (has extras) } from pid 17575”用于 Facebook,以及

"Starting: Intent { act=android.intent.action.SEND typ=text/plain flg=0x3000000 cmp=com.facebook.katana/.ShareLinkActivity (has extras) } from pid 17575" for Twitter。

我使用以下代码(在按钮的 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);

但即使日志看起来相同,也不会发生任何事情。

有什么想法吗?

【问题讨论】:

  • 什么是“0x3000000”?

标签: android facebook twitter


【解决方案1】:

我认为你应该使用 setClassName 而不是 setComponent。

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

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

注意:最近的 Twitter 版本使用“com.twitter.android.composer.ComposerActivity”(而不是“com.twitter.android.PostActivity')

【讨论】:

  • 我知道有一种简单的方法可以做到这一点!非常感谢@Jompis,你的帖子救了我!!
  • 有谁知道只打开 twitter 应用程序的类名吗? intent.setClassName("com.twitter.android", "com.twitter.android");显然这不起作用。
  • 更新了答案,现在是:com.twitter.android.composer.ComposerActivity
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
  • 2012-10-25
  • 2017-06-09
  • 2011-07-10
相关资源
最近更新 更多