2011年6月15日水曜日

アプリから画像の選択Intentをもらう

画像をピックするIntent呼び出しに反応するには、AndroidManifest.xml に以下を追加する。

            <intent-filter>
                <action android:name="android.intent.action.GET_CONTENT" />
                <category android:name="android.intent.category.OPENABLE" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="image/*" />
            </intent-filter>

ただし、アプリによってはこれで受け取れない。例えば Seesmic の「添付ファイルを選択」に反応するためには、以下を追加する必要がある。

            <intent-filter>
                <action android:name="android.intent.action.PICK" />
                <category android:name="android.intent.category.OPENABLE" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="image/*" />
            </intent-filter>





2011年6月5日日曜日

Xperia で GregorianCalendar に年月日をセット

Xperiaでカレンダーに値をセットしてゲットすると値がずれることがある。例えば 1995/6/5 を new GregorianCalendar(1995, 6 - 1, 5) として、Calendar.DATE をgetすると 4 が返ってくる。ちょっと調べてみたら、1976/5/3 から 2000/9/17 の期間はずれる。1942年あたりもずれる。同じコードをエミュレータで実行してみるとずれない。DATEをセットする前にゲットするとずれない。

GregorianCalendar calendar = new GregorianCalendar();
   calendar.set(Calendar.YEAR, year);
   calendar.set(Calendar.MONTH, month - 1);
   // Xperiaで日にちがずれる。
   calendar.get(Calendar.DATE);
   calendar.set(Calendar.DATE, day);