【android】HTMLデコードをする。

最近ちょこっとandroidの開発やってました。
そのときのメモ

RSSxmlをパースしてListViewに表示するってことをやってたら、
TextViewで表示する文字列がHTMLエンコードされた状態
(&等のHTML特殊文字が入っている状態)になってました。
そのときは次のようにするとHTMLデコードされた文字列が取得できます。

import android.text.Html;

String text = Html.fromHtml(string).toString();

※stringはHTMLエンコードされた文字列

FTP接続でエラーになった場合のFTPのレスポンスコードの取り方

AppleFTP接続のサンプル(SimpleFTPSample)で、
なぜかディレクトリ作成のサンプルでしかレスポンスコードをチェックしていないので、他の場合でもいけるのか試してみた。

CFReadStreamRef使用時はCFReadStreamGetError()、
CFWriteStreamRef使用時はCFWriteStreamGetError()を使って、
返ってきたCFStreamErrorのdomainとerrorを確認する。

SimpleFTPSampleのListControllerのstream:handleEvent:の
case NSStreamEventErrorOccurred:に次のコードを追加、

CFStreamError error = CFReadStreamGetError((__bridge CFReadStreamRef)self.networkStream);

NSLog(@"domain = %ld", error.domain);
NSLog(@"error = %ld", error.error);

ためしに間違ったパスワードを指定して接続した場合を確認

2012-09-08 16:37:33.133 FTPSample[13254:707] domain = 6 // kCFStreamErrorDomainFTP
2012-09-08 16:37:33.134 FTPSample[13254:707] error = 530 // Not logged in.

※レスポンスコードはここのページを参照
http://www.atmarkit.co.jp/fnetwork/rensai/netpro10/ftp-responsecode.html

ちゃんととれてるよなあ。
なんで他のサンプルではチェックしていないんだろう。

UILabelのhighlightedTextColorを設定する

つい最近この存在に気づいたのでメモ

UILabelのhighlightedTextColorを指定すると
addしたUITableViewCellがhighlightになったときに
連動してUILabelのフォントカラーが変更される。

highlightedTextColorが白

highlightedTextColorが赤

ちなみに、highlightedTextColorのデフォルトは黒なので
カスタムセルでxibやソースコードでUILabelをaddする場合は
highlightになってもフォントカラーが変更されないという事になりえるので注意が必要です。

Twitter.frameworkを使って投稿する。(おまけ)

TWTweetComposeViewControllerを表示した時点で
任意の文字列を入力している状態にしたいときは、

  • (BOOL)setInitialText:(NSString *)text;

で入れたい文字列をセットします。

画像やURLをつけて投稿したい場合は
TWTweetComposeViewControllerを表示する前に

  • (BOOL)addImage:(UIImage *)image;
  • (BOOL)addURL:(NSURL *)url;

でそれぞれセットします。

※画像とURLをセットする順番やセットする数で制限があるようです。

Twitter.frameworkを使って投稿する。

iOS5 SDKからTwitter.frameworkが追加されたのでどんな感じで投稿できるか試してみました。

まず、Twitter.hをインポート

#import

Twitterに投稿できる(設定アプリでアカウントを登録している)かどうかのチェックはTWTweetComposeViewControllerのクラスメソッドを使用します。

+ (BOOL)canSendTweet;

投稿できる場合はTWTweetComposeViewControllerをモーダル表示、できない場合はアラートを表示するようにしてみました。

if ([TWTweetComposeViewController canSendTweet]) {
TWTweetComposeViewController* vc = [[TWTweetComposeViewController alloc] init];
[self presentModalViewController:vc animated:YES];
[vc release];
} else {
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"お知らせ"
message:@"Twitterアカウントが登録されていません。"
delegate:nil
cancelButtonTitle:nil
otherButtonTitles:@"OK", nil];
[alert show];
[alert release];
}
動かすとこんな感じで表示されます。

実際にTweetしたのがこれ。

TWTweetComposeViewControllerを使う事で簡単に投稿できました。

なお、設定アプリではTwitterアカウントを複数登録できますが、
この辺もTwitter.frameworkで吸収してくれているようです。
次のように投稿するアカウントを指定できるようになります。