81

Webview を使用せずに、Twitter アプリを起動し、アプリケーションから指定したページを開く方法を探していました。ここで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]"))); 
}
4

6 に答える 6

48

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 が新しいアクティビティとしてではなく、アプリ内で開いていた問題を修正するために追加されました。

于 2012-12-12T16:12:38.670 に答える
42

これは私のために働いた:twitter://user?user_id=id_num

于 2012-09-21T11:56:21.393 に答える
4

私の答えは、fg.radigales と Harry から広く受け入れられている答えに基づいています。ユーザーが Twitter をインストールしていても無効にしている場合 (たとえば、App Quarantine を使用して)、この方法は機能しません。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"));
于 2014-02-18T16:43:14.307 に答える
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) 
        {

        }
于 2012-06-19T16:40:21.033 に答える
0

私にとって、これは、Twitterアプリを持っているか、Webブラウザーにアクセスすると、Twitterアプリを開くトリックを行いました。

 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/"+"USERID"));
                    startActivity(intent);
于 2019-07-21T15:26:09.247 に答える