Создать «Tweet this button», чтобы делиться информацией только в Twitter, не так просто - PullRequest
5 голосов
/ 26 июля 2011

Для моего приложения я показываю твиттер внутри главного экрана.Что круто, так это то, что люди могут следить за информацией в твиттере о железнодорожной компании в моей стране, не имея учетной записи в Твиттере.

enter image description here

Я хотел бы реагировать, когда пользователь нажимаетна предмет, а затем позволить ему ответить / 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 и т. д.)

Большое спасибо за любые предложения.

Редактировать: мой текущий обходной путь, который мне вообще не нравится:

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

1 Ответ

1 голос
/ 06 марта 2012

Официального твиттер-API в Android нет. Я настоятельно рекомендую вам реализовать свой собственный с помощью что-то вроде twitter4j.

http://twitter4j.org/en/index.html

Вы должны знать идентификатор пользователя, идентификатор твита и т. Д.и т. д. при щелчке вы можете использовать twitter4j следующим образом:

Twitter twitter = new TwitterFactory().getInstance();
twitter.updateStatus(new StatusUpdate("@USERNAME").inReplyToStatusId(STATUSID)); 

Я не уверен, используете ли вы twitter4j или нет, если нет, я настоятельно рекомендую вам сделать это как запросдля твитов это очень просто.

Вам также нужна аутентификация в вашем приложении, если вы используете twitter4j, это довольно просто, но я не буду вдаваться в это, так как вам нужно будет открыть окно аутентификации и т. д.пример на http://twitter4j.org/en/code-examples.html


Если вы не хотите идти по пути twitter4j, к сожалению, ваш путь - единственный путь, который я знаю.Просто используйте менеджер пакетов, чтобы проверить, существуют ли они, и уведомите пользователя в противном случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...