通过其他应用程序在Twitter应用程序中打开页面-Android


78

我一直在寻找启动Twitter应用程序并从应用程序中打开指定页面而不使用webview的方法。我在这里找到了针对Facebook的解决方案: 在指定的个人资料页面上打开Facebook应用

我需要类似的东西。

编辑 我刚刚找到一个解决方案:

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
Sergey Kostrukov 2013年

并且“ twitter:// status?user_id = [USER_ID]&status_id = [STATUS_ID]”是可能的
ChangUZ

@jbc有当我们点击跟踪任何回调....
NagarjunaReddy

不知道,我帮不上你@NagarjunaReddy :(
jbc25 2014年

最好捕获一个更具体的异常,在这种情况下为ActivityNotFoundException。否则,您可能最终会遇到其他问题(如果向该块添加更多代码)。
劳尔萨利纳斯-蒙特阿古

Answers:


41

这对我有用: twitter://user?user_id=id_num


2
在2016年只需使用:startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/PROFILENAME")));
Rick

您提供给我们的链接可以提供我的ID。我使用这个网站:mytwitterid.com
塞巴斯蒂安·

如果您想使用意图,那会是什么样?喜欢https://twitter.com/intent?text=hello吗?
凯文·埃尔南德斯

46

根据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在我的应用程序内部而不是作为新活动打开的问题。


2
给出错误,此时无法获取用户twitter android
Rahul 2015年

参见fg.radigales答案
哈利

该链接并没有帮助我...无论如何我从其他地方得到它,现在正在工作:)
Narendra Singh

8

通过2个步骤,使用Android使用其他应用打开Twitter应用上的页面:

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用户ID

参考https : //solutionspirit.com/open-page-twitter-application-android/

希望它会有所帮助:)


4

我的答案建立在fg.radigales和Harry广泛接受的答案之上。如果用户安装了Twitter但被禁用(例如通过使用App隔离),则此方法将不起作用。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”
Dmitry Kolesnikovich 2014年

0

对我来说,这样做的窍门是打开Twitter应用程序(如果您拥有)或访问Web浏览器:

 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/"+"USERID"));
                    startActivity(intent);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.