<< Android-Note
TwitterやFacebookに投稿する方法
アプリ内で加工したデータ(文章や画像)をTwitterやFacebookなどのSNSに投稿したい場合にその投稿画面を開く方法を紹介します。
投稿に必要なのは次の手順です。
- どのSNSに投稿するか決める
- 投稿するSNSアプリがあるか調べる
- 該当するアプリをインテントから起動する
この手順でSNS投稿メソッドを作りました。
public void shareWith(String appKeyword, String message, String imagePath) { List<Intent> shareIntentList = new ArrayList<Intent>(); //起動するインテントのリスト List<ResolveInfo> resolveInfoList = getPackageManager().queryIntentActivities( new Intent(Intent.ACTION_SEND).setType("image/png"), 0); //SNSアプリの一覧 for(ResolveInfo info : resolveInfoList){ Intent shareIntent = new Intent(Intent.ACTION_SEND).setType( "image/png"); if(info.activityInfo.packageName.toLowerCase().contains(appKeyword)){ shareIntent.putExtra(Intent.EXTRA_TEXT, message); shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile( new File(imagePath))); shareIntent.setPackage(info.activityInfo.packageName); shareIntentList.add(shareIntent); } } //もし該当するアプリが1つでもあれば起動する if(!shareIntentList.isEmpty()){ Intent chooserIntent = Intent.createChooser(shareIntentList.remove(0), getString(R.string.sns_chooser_title)); chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, shareIntentList.toArray(new Parcelable[]{})); startActivity(chooserIntent); } }
例えば、このメソッドを使ってTwitterに投稿したい場合は
shareWith("twitter", "posted from app.", testDir.getAbsolutePath() + "/image.png");
と実行すればパッケージ名またはアプリ名にというキーワードが含まれているアプリだけを選び出し、そのアプリから直接投稿画面を表示できます。
実際にTwitterアプリを起動したときの様子が次の画像です。
もちろんTwitterだけでなく、探し出したいアプリに応じてキーワードを変えることができます。アプリのキーワードと起動するアプリは次のように対応しています。
キーワード | 起動するSNSアプリ |
---|---|
ツイッター | |
フェイスブック | |
gmail | Gmail |
mms | メール |
ただし、例えば "twitter" というキーワードがもつアプリが1つ以上ある場合はそれらのアプリが複数起動します。
また、アプリがインストールされていない場合はなにも起こりません。
関連項目
© Kaz