Відкрити сторінку в програмі Twitter з іншої програми - Android


79

Я шукав якийсь спосіб запустити програму Twitter і відкрити вказану сторінку з моєї програми без веб-перегляду. Рішення для Facebook я знайшов тут: відкриття програми facebook на вказаній сторінці профілю

Мені потрібно щось подібне.

EDIT Я щойно знайшов рішення:

try {
    Intent intent = new Intent(Intent.ACTION_VIEW,
    Uri.parse("twitter://user?screen_name=[user_name]"));
    startActivity(intent);
} catch (Exception e) {
    startActivity(new Intent(Intent.ACTION_VIEW,
    Uri.parse("https://twitter.com/#!/[user_name]"))); 
}

3
Дякую! Тут я б поставив більш конкретний виняток: ActivityNotFoundException
Сергій Коструков

І "twitter: // status? User_id = [USER_ID] & status_id = [STATUS_ID]" можливо
ChangUZ

@jbc є зворотний дзвінок, коли ми натискаємо слідувати ....
NagarjunaReddy

Не знаю, я не можу вам допомогти з цим @NagarjunaReddy :(
jbc25

Віддайте перевагу лову більш конкретного винятку, у цьому випадку ActivityNotFoundException. В іншому випадку ви можете виявити інші проблеми (якщо до цього блоку додати більше коду).
Рауль Салінас-Монтеагудо,

Відповіді:


41

Це спрацювало для мене: twitter://user?user_id=id_num


2
У 2016 році просто використовуйте:startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/PROFILENAME")));
Рік

Я можу отримати своє посвідчення за посиланням, яке ви нам надаєте. Я використовую цей веб-сайт: mytwitterid.com
Себастьян

Як би це виглядало, якби ви хотіли використати намір? подобається https://twitter.com/intent?text=hello?
Кевін Ернандес,

47

На основі відповіді fg.radigales, ось що я використовував для запуску програми, якщо це можливо, але в іншому випадку повертаюся до браузера:

Intent intent = null;
try {
    // get the Twitter app if possible
    this.getPackageManager().getPackageInfo("com.twitter.android", 0);
    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=USERID"));
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
} catch (Exception e) {
    // no Twitter app, revert to browser
    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/PROFILENAME"));
}
this.startActivity(intent);

ОНОВЛЕННЯ

Додано, intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);щоб виправити проблему, коли твіттер відкривався всередині мого додатка, а не як нове заняття.


2
дає помилку, не вдається отримати користувачів на даний момент twitter android
Рахул

Див. Відповідь fg.radigales
Гаррі

це посилання мені не допомогло ... у будь-якому разі я отримав його звідкись і зараз працюю :)
Нарендра Сінгх

8

Відкрийте сторінку в програмі Twitter з іншої програми, що використовує Android, у 2 кроки:

1. Просто вставте наведений нижче код (при натисканні кнопки або де завгодно)

Intent intent = null;
try{
   // Get Twitter app
   this.getPackageManager().getPackageInfo("com.twitter.android", 0);
   intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=USER_ID"));
   intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
} catch () {
   // If no Twitter app found, open on browser
   intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/USERNAME"));
}

2.intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=USER_ID"));

Щоб отримати USER_ID, просто напишіть ім’я користувача http://gettwitterid.com/ та отримайте там ідентифікатор користувача Twitter

Довідково : https://solutionspirit.com/open-page-twitter-application-android/

Сподіваюся, це допоможе :)


4

Моя відповідь спирається на широко прийняті відповіді fg.radigales та Гаррі. Якщо користувач встановив Twitter, але вимкнув його (наприклад, за допомогою карантину додатків), цей метод не буде працювати. Буде вибрано намір для програми Twitter, але вона не зможе обробити її, оскільки її вимкнено.

Замість:

getPackageManager().getPackageInfo("com.twitter.android", 0);
intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=2343965036"));

Ви можете використовувати наступне, щоб вирішити, що робити:

PackageInfo info = getPackageManager().getPackageInfo("com.twitter.android", 0);
if(info.applicationInfo.enabled)
    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=2343965036"));
else
    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/wrkoutapp"));

1

Просто спробуйте цей фрагмент коду. Це вам допоможе.

//Checking If the app is installed, according to the package name
        Intent intent = new Intent();
        intent.setType("text/plain");
        intent.setAction(Intent.ACTION_SEND);
        final PackageManager packageManager = getPackageManager();
        List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);

        for (ResolveInfo resolveInfo : list) 
        {
            String packageName = resolveInfo.activityInfo.packageName;

            //In case that the app is installed, lunch it.
            if (packageName != null && packageName.equals("com.twitter.android")) 
            {
                try
                {
                    String formattedTwitterAddress = "twitter://user/" ;
                    Intent browseTwitter = new Intent(Intent.ACTION_VIEW, Uri.parse(formattedTwitterAddress));
                                    long twitterId = <Here is the place for the twitter id>
                    browseTwitter.putExtra("user_id", twitterId);
                    startActivity(browseTwitter);

                    return;
                }
                catch (Exception e) 
                {

                }
            }
        }

        //If it gets here it means that the twitter app is not installed. Therefor, lunch the browser.
        try
        { 
                            String twitterName = <Put the twitter name here>
            String formattedTwitterAddress = "http://twitter.com/" + twitterName;
            Intent browseTwitter = new Intent(Intent.ACTION_VIEW, Uri.parse(formattedTwitterAddress)); 
            startActivity(browseTwitter);
        }
        catch (Exception e) 
        {

        }

Опишіть, будь ласка, більш чітко "twitter id"
Дмитро Колеснікович

0

Для мене це зробило фокус, він відкриває програму Twitter, якщо вона у вас є або переходить у веб-браузер:

 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/"+"USERID"));
                    startActivity(intent);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.