その時に調べたTwitterの公式クライアントを呼びだしてツイートする4つの方法です
- 暗黙的Intentで投稿 Intent.ACTION_SENDで暗黙的Intent呼び出しによる投稿です
- 公式アプリのPackage、Classを指定して投稿 PackageManagerで公式クライアントをピンポイントで呼び出します
- URIスキームを指定して投稿 WEBページからアプリを呼び出すのに使用するURIスキームを利用して呼び出します
- URL(http://twitter.com/)を利用して投稿 公式クライアントかWEBブラウザが呼び出されます ブラウザの場合、"http://twitter.com/"の投稿画面が呼び出されます
ACTION_SENDと"text/plain"に反応するアプリがすべて出るので公式以外のクライアントアプリ、Twitterに関係のないアプリも出てきます
public static void tweetFile1(Context context, String message) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, message);
((Activity)context).startActivity(intent);
}
公式以外のクライアントアプリ以外は反応しません
公式の投稿用Activityが変わった場合には修正が必要となります(過去2回程変更されている)
public static void tweetFile2(Context context, String message) {
String twitterClass = "com.twitter.android.composer.TextFirstComposerActivity";
try {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, message);
intent.setClassName("com.twitter.android", twitterClass);
((Activity)context).startActivity(intent);
} catch (PackageManager.NameNotFoundException e) {
//Toast("Not found com.twitter.android")
}
}
公式以外でも"twitter://"のスキームに対応しているアプリが呼び出されます
public static void tweetFile3(Context context, String message) {
String url = "twitter://post?message=" + message;
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setType("text/plain");
intent.setData(Uri.parse(url));
((Activity)context).startActivity(intent);
}
public static void tweetFile4(Context context, String message) {
String url = "http://twitter.com/share?text=" + message;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
intent.setType("text/plain");
intent.setData(Uri.parse(url));
((Activity)context).startActivity(intent);
}
以下に各手法の特徴をまとめてみました
| 投稿方法 | 互換 クライ アント | 画像 投稿 | 備 考 |
|---|---|---|---|
| 1.暗黙的Intent | ○ | ○ | Twitter関連アプリ以外もでる |
| 2.Package指定 | × | ○ | 公式Twitterクライアントのみでる |
| 3.URIスキーム指定 | △ | × | 互換クライアントはスキーム対応アプリのみ |
| 4.URL(HTTP)指定 | × | × | 公式クライアントがなくてもブラウザで投稿できる |
※2014/06/02現在
0 件のコメント:
コメントを投稿