Откройте страницу в приложении Twitter из другого приложения-Android


Я искал какой-то способ запустить приложение Twitter и открыть указанную страницу из моего приложения, без webview. Я нашел решение для 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]"))); 
}
5 67

5 ответов:

это сработало для меня:twitter://user?user_id=id_num

чтобы узнать идентификатор:http://www.idfromuser.com/

на основе 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); чтобы исправить проблему, когда twitter открывался внутри моего приложения, а не как новое действие.

мой ответ строится поверх широко принятых ответов от fg.радигалес и Гарри. Если у пользователя установлен, но отключен 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"));

откройте страницу в приложении 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/

надеюсь, что это поможет :)

просто попробуйте этот фрагмент кода. Это тебе поможет.

//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) 
        {

        }