私のアプリでは、次のコードを使用して、DayView で標準の Android カレンダーを開きます。
Intent intent2 = new Intent();
intent2.setComponent(new ComponentName("com.android.calendar", "com.android.calendar.DayActivity"));
intent2.setAction("android.intent.action.MAIN");
intent2.addCategory("android.intent.category.LAUNCHER");
intent2.setFlags(0x10200000);
intent2.putExtra("beginTime", (new Time()).setJulianDay(reqDay));
intent2.putExtra("DETAIL_VIEW", true);
intent2.putExtra("DETAIL_VIEW_MODE", 2);
context.startActivity(intent2);
これは以前は問題なく動作していましたが、ほとんどのハンドセットで問題なく動作しています。ただし、昨日、ある電話(Android 2.3 - CM7)でこのエラーが発生し始めました(読みやすくするために改行が追加されました):
Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]
flg=0x10200000 cmp=com.android.calendar/.DayActivity (has extras) }
from ProcessRecord{407719a0 3244:com.lge.android.calendarwidget/10077}
(pid=3244, uid=10077) requires null
ログ猫からの完全なエラーは以下のとおりです。
I/ActivityManager( 245): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.calendar/.DayActivity (has extras) } from pid 3244
W/ActivityManager( 245): Permission denied: checkComponentPermission() reqUid=10004
W/ActivityManager( 245): Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.calendar/.DayActivity (has extras) } from ProcessRecord{407719a0 3244:com.lge.android.calendarwidget/10077} (pid=3244, uid=10077) requires null
W/calw3 ( 3244): com.android.calendar not found, trying com.google.android.calendar
W/calw3 ( 3244): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.calendar/.DayActivity (has extras) } from ProcessRecord{407719a0 3244:com.lge.android.calendarwidget/10077} (pid=3244, uid=10077) requires null
2 つの質問があります: (1) なぜ突然壊れたのですか? 以前はこの電話で間違いなく機能していました(これは私のメインの電話です)。(2)どうすれば修正できますか?
編集この同じコードが、私が所有する別の電話(HTC Desire X)でも完全に機能していることを追加するだけです。