对于我的应用程序,我在主屏幕内显示一个twitterfeed。 最酷的是,人们可以在没有Twitter帐户的情况下关注我所在国家的火车公司的推特信息。
我想做的是当用户点击某个项目然后允许他回复/ RT时做出反应。 如果用户没有安装推特应用程序,则不会发生任何事情(可能是祝酒)
我尝试了这个动作:
Intent tweetIntent = new Intent(Intent.ACTION_SEND);
tweetIntent.putExtra(Intent.EXTRA_TEXT, "Test; please ignore");
tweetIntent.setType("application/twitter");
但似乎还要打开电子邮件,Gmail和其他无用的应用程序。
有没有办法过滤该列表并只保留Twitter应用程序(Twitter,Twydroid,Plume,Twicca等)。
非常感谢任何建议。
编辑: 我当前的解决方法,我不喜欢AT ALL:
public Intent findTwitterClient() {
final String[] twitterApps = {
// package // name
"com.twitter.android", // official
"com.levelup.touiteur", // Plume
"com.twidroid", // twidroyd
"com.handmark.tweetcaster", //
"com.thedeck.android" // };
Intent tweetIntent = new Intent();
tweetIntent.setType("text/plain");
final PackageManager packageManager = getPackageManager();
List<resolveinfo> list = packageManager.queryIntentActivities(
tweetIntent, PackageManager.MATCH_DEFAULT_ONLY);
for (int i = 0; i <twitterApps.length; i++) {
for (ResolveInfo resolveInfo : list) {
String p = resolveInfo.activityInfo.packageName;
if (p != null && p.startsWith(twitterApps[i])) {
tweetIntent.setPackage(p);
return tweetIntent;
}
}
}
return null;
}
答案 0 :(得分:1)
android中没有正式的twitter API,我强烈建议你用twitter4j之类的东西实现自己的。
http://twitter4j.org/en/index.html
点击后你应该知道用户ID和推文ID等,然后你可以像这样使用twitter4j:
Twitter twitter = new TwitterFactory().getInstance();
twitter.updateStatus(new StatusUpdate("@USERNAME").inReplyToStatusId(STATUSID));
我不确定您是否已经使用twitter4j,如果您不强烈建议您查询推文非常容易。
如果你使用twitter4j,你还需要在你的应用程序中进行身份验证,它相当简单但我不会进入它,因为你需要弹出一个身份验证窗口,等等。 ;是http://twitter4j.org/en/code-examples.html
的一个例子如果你不想去twitter4j路线,不幸的是你的方式是我所知道的唯一方式。只需使用包管理器检查它们是否存在,否则通知用户。