HTC Senseのカレンダー起動方法
Tattooを初めとする、HTC Sense UIには、Google標準のカレンダーアプリは入っていません。
従って、カレンダーを起動するアプリ(タオでは、tCalendarや、tCalendarWidget)は、HTC Sense上ではカレンダーアプリを起動できません。HTCのカレンダーアプリを起動するように変更する必要があります。
tCalendarWidgetは、前から対応しようとは思っていたのですが、延び延びになっていました。
Desireが明日発売されますから、必然的に対応する必要が出てきたのであわてて対応してきました。
以下、解説です。
概要
既にカレンダー起動ロジックを書いている方は、HTCのパラメータだけわかれば対応可能で解説は必要ないと思います、Googleのカレンダーアプリと、HTCのカレンダーアプリは以下のようなコンポーネント名となっています。
//HTCSense以外のカレンダー private static final String DEFAULT_CALENDAR_PACKAGE = "com.android.calendar"; private static final String DEFAULT_CALENDAR_CLASS = "com.android.calendar.LaunchActivity"; //HTCSenseのカレンダー private static final String DEFAULT_CALENDAR_PACKAGE_HTC = "com.htc.calendar"; private static final String DEFAULT_CALENDAR_CLASS_HTC = ".LaunchActivity";
ロジック的には、Googleカレンダーが見つからなければ、HTCカレンダーを起動する処理に変更するだけです。
チェックロジック
Intent intent = new Intent();
ComponentName componentName = new ComponentName(DEFAULT_CALENDAR_PACKAGE, DEFAULT_CALENDAR_CLASS);
intent.setComponent(componentName);
final PackageManager packageManager = context.getPackageManager();
List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if(list.size() <= 0 ){
/*
* HTCSenseの場合
*/
componentName = new ComponentName(DEFAULT_CALENDAR_PACKAGE_HTC, DEFAULT_CALENDAR_CLASS_HTC);
intent.setComponent(componentName);
}
こんな感じで、指定されたコンポーネントがあるかをチェックしていくだけです。(チェックメソッドを作った方がよいでしょうね)
ちなみに、現在デモで出ているIS01もGoogle標準のカレンダーはインストールされていませんし、Alex eReaderも同じくインストールされていません。
」


