前人未踏の領域へ アプリ開発編

Android, iOSアプリ開発に関する調査メモ置き場。ほとんどAndroid。はてなダイアリーから移行したため古い記事にはアプリ以外も含まれます。

Twitter Kit 3.0に関する覚え書き

認証について

  • TwitterAuthClient.authorize()を使う
  • アカウント連携画面の結果はTwitterAuthClient.onActivityResult()で受け取る
  • TwitterAuthClient.authorize()は状態(authState)を持つ
  • アカウント連携画面でキャンセルされた場合もTwitterAuthClient.onActivityResult()を経由させる。
  • そうしないとauthStateが処理中のままになり、authorize()ができなくなる。
  • 処理中を解除したい場合はTwitterAuthClient.cancelAuthorizeでキャンセル可能

画像のアップロードについて

  • 画像のアップロードはTwitterアプリを使う方法(TweetComposer経由)と自分のアプリから行う方法(ComposerActivity経由)がある。
  • ネットワーク上にあるファイルのアップロードは不可。一度ダウンロードする必要がある。
TweetComposerを使う場合
  • FileProvider(ContentProvider)による提供
  • Twitterアプリを使う方法ではアプリがインストールされていないとブラウザ経由になる
  • ブラウザ経由の場合はイメージの自動投稿ができない
  • ハッシュタグをbuilderから渡せない(textにつなげる)
            Uri contentUri = FileProvider.getUriForFile(activity, BuildConfig.APPLICATION_ID + ".file_provider", newFile);
            new TweetComposer.Builder(activity)
                    .image(contentUri)
                    .text(text)
                    .show();
ComposerActivityを使う場合
  • contentスキーマ(content://)の場合はMediaStoreから取得可能なものしか投稿できない。FileProvider.getUriForFileはNG。
  • ただし、ファイルスキーマ(file:)なら可能 Uri fileUri = Uri.fromFile(file); を使う
            Uri fileUri = Uri.fromFile(newFile);
            final Intent intent = new ComposerActivity.Builder(activity)
                    .session(session)
                    .image(fileUri)
                    .text(text)
                    .hashtags(hashTags)
                    .createIntent();
            activity.startActivity(intent);