2012/03/23

ソフトバンクで店頭に行かずに機種変更した





DELL Streak Pro 101DLをソフトバンクオンラインで購入して、Web上で機種変更手続きをやってみた。

全部オンラインで完結するので、非常に便利でした。






参考までに、購入~手続きの大まかな流れをまとめておきます。
店頭に行くと、訳の解らん契約を勧められたりする場合もあるので、
これからもオンラインでやってこうと思います。



  1. ソフトバンクオンラインで端末購入
    いろんな規約の確認がありますが、店頭で要領の得ない話を聞くより断然マシです。
    フツーのオンラインショップのように購入手続きできました。
  2. すぐに「発送準備完了のお知らせ」とかいうメールが来ます。
    そこに機種変更手続きに関する説明も記載されています。
  3. 2日くらいすると、「出荷完了のお知らせ」というメールが来ます。
    このメールの後半に、端末切り替えに必要な「お申し込み受付番号」が記載されているので破棄しないように注意。
  4. 端末が届いたら、同梱されているUSIMカードを新しい端末に挿します。
    (カードを挿すとき、端末の電源はOFFにしとけとマニュアルにありました。)
  5. 「出荷完了のお知らせ」メールにWebで端末切り替えるURLが記載されているので、おもむろにクリックします。
    先ほどの受付番号と生年月日、メールアドレスを入力します。

    処理の完了に30分くらいかかるようです。
    先に端末の電源をONにし、Wi-Fi環境でGoogleアカウントのセットアップをしておきます。
  6. しばらくすると「手続き完了のお知らせ」が届きます。

    が、一向に新しい端末のアンテナが立たない。
    どうやら切り替えの反映には、端末の再起動が必要な模様です。
    (30分くらい悩んでしまった・・・)

    端末を再起動すると無事3G通信出来るようになり、電話番号も認識してました。
    旧端末も再起動すると、3G通信が無効になりました。

    起動しっぱなしだと、アンテナは立っているように見えましたが、おそらく使用できない状態なんでしょう。
    確認してませんが。

作業自体は非常に簡単でした。
店頭に行くと待ち時間の方が長いなんてこともザラなので、
オンラインで全て完結するのは嬉しいです。


2012/03/05

[Android] 連絡先の取得


getContentResolver()を使用する。


android.database.Cursor c = getContentResolver().query(
 Data.CONTENT_URI,
 new String[]{...}, //取得するColumnを指定。 nullだと全Column
 ".....", //where句に該当、条件を指定しない場合はnull
 new String[]{...}, //プレースホルダに設定する値。上記where句の?に順にセットされる
 "....." //ORDER BY句。nullだと順序を指定しない。
);


getContentResolverメソッドはandroid.content.ContextWrapperクラスに定義されていて、 android.app.ActivityはContextWrapperを継承している。


取得例 [http://developer.android.com/intl/ja/reference/android/provider/ContactsContract.Data.html]
Cursor c = getContentResolver().query(Data.CONTENT_URI,
 new String[] {Data._ID, Phone.NUMBER, Phone.TYPE, Phone.LABEL},
 Data.CONTACT_ID + "=?" + " AND "
  + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'",
 new String[] {String.valueOf(contactId)},
 null);



アプリケーションでContactへの参照を保持する場合は、android.provider.ContactsConstract.Contacts.LOOKUP_KEYを使用する。

//String lookupKey <- 保持しているLOOKUP_KEY
//lookupKeyからURIを組み上げる
android.net.Uri lookupUri = Uri.withAppendedPath(Contents.CONTENT_LOOKUP_URI, lookupKey);

//URIからContactを取得
android.database.Cursor c = getContentResolver().query(
 lookupUri, new String[]{ Contacts.DISPLAY_NAME }, ....
);

try{
 c.moveToFirst();
 String displayName = c.getString(0);
}finally{
 c.close();
}



パフォーマンスに配慮するなら、LOOKUP_KEYのほかにCONTACT_IDを保持し、 android.provider.ContactsConstract.Contacts.getLookupUri()を使用して URIを取得する。


getLookupUri()では、最初に CONTACT_IDを使用してContactを探し、ヒットしなければLOOKUP_KEYを使用する。


Uri lookupUri = getLookupUri(contactId, lookupKey);


Contactの集約により、CONTACT_IDは変化する可能性があるため、データの参照には常にURIを使用する必要がある。