twitter連携
ios
http://youngforever.hatenablog.com/entry/2014/05/31/150452
上記を参考に実装
android
twitter4jによるツイート実装もあるが、認証が面倒でツイートしてくれなそうなので
シンプルに公式アプリに対してIntentを送る事にした。
(公式アプリを探す処理が入ってるので若干長い)
public class TwitterTool { public static int REQUEST_CODE = 777; public static void share(String paramsString) { // パラメータをjson文字列形式で貰ってる Log.d("TwitterTool", "paramsString:" + paramsString); Map<String, String> params = JSON.decode(paramsString); AppActivity activity = (AppActivity) AppActivity.getContext(); Intent tweetIntent = new Intent(Intent.ACTION_SEND); tweetIntent.putExtra(Intent.EXTRA_TEXT, params.get("text")); //tweetIntent.setType("text/plain"); // resフォルダ内の画像ファイルも追加する tweetIntent.setType("image/*"); String fileName = "android.resource://" + activity.getPackageName() + "/" + R.raw.twitter_share; Uri uri = Uri.parse(fileName); tweetIntent.putExtra(Intent.EXTRA_STREAM, uri); // twitter公式アプリのみを探す処理 PackageManager packManager = activity.getPackageManager(); List<ResolveInfo> resolvedInfoList = packManager.queryIntentActivities(tweetIntent, PackageManager.MATCH_DEFAULT_ONLY); boolean resolved = false; for(ResolveInfo resolveInfo: resolvedInfoList){ if(resolveInfo.activityInfo.packageName.startsWith("com.twitter.android")){ tweetIntent.setClassName( resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name ); resolved = true; break; } } if(resolved){ activity.startActivityForResult(tweetIntent, REQUEST_CODE); }else{ Toast.makeText(activity, "最新のtwitter公式アプリが必要です", Toast.LENGTH_LONG).show(); } } public static void successCallback() { // ここでツイート成功処理 } }
MainActivity
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode == TwitterTool.REQUEST_CODE){ Log.d("AppActivity", "onActivityResult get twitter requestCode resultCode:" + resultCode); // ツイート成功は-1っぽい if(resultCode == -1){ TwitterTool.successCallback(); } } }