web-dev-qa-db-ja.com

他のアプリから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]"))); 
}
69
jbc25

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

IDを知るには: http://www.idfromuser.com/

41
fg.radigales

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);
_

[〜#〜] update [〜#〜]

Twitterが新しいアクティビティとしてではなくアプリ内で開いていた問題を修正するためにintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);を追加しました。

44
Harry

Android 2ステップで他のアプリから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
SHUJAT MUNAWAR

私の答えは、fg.radigalesとHarryから広く受け入れられている答えに基づいています。ユーザーに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"));
4
igordc
fun getOpenTwitterIntent(context: Context, url: String) {
    return try {
        context.packageManager.getPackageInfo("com.Twitter.Android", 0)
        context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("Twitter://user?screen_name=$url")))
    } catch (e: Exception) {
        context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://Twitter.com/#!/$url")))
    }
}
1
Hardik Patel

このコードスニペットを試してください。それはあなたを助けます。

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

        }
1
Akilan

私にとって、これはあなたがそれを持っているかウェブブラウザに行く場合にTwitterアプリを開くトリックをしました:

 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://Twitter.com/"+"USERID"));
                    startActivity(intent);
0