0

私のアプリでは、次のコードを使用して、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)でも完全に機能していることを追加するだけです。

4

2 に答える 2

1

(1) なぜ突然壊れたのですか? 以前はこの電話で間違いなく機能していました(これは私のメインの電話です)

そのアプリケーションは、おそらくファームウェア アップグレードの一部としてアップグレードされ、そのアクティビティはエクスポートされなくなりました。

(2) どうすれば直せますか?

コードを削除します。プライベート (エクスポートされていない) アクティビティを開始することはできません。CalendarContractその API がアクティビティの動作をサポートしている場合は、このアクティビティの独自のバージョンをロールするために使用することを検討してください。

アプリがすべてのデバイスに存在する、またはすべてのデバイスでそのアクティビティをサポートするという保証がなかったため、そもそもこのアプリで文書化されていないアクティビティを呼び出すべきではありませんでした。あなたの現在の状況は、この問題のもう 1 つの具体的な症状です。

于 2012-12-22T01:03:19.377 に答える
0

以前はすべてが正常だったのは非常に奇妙です.Androidマニフェストに次の行がありますか?:

 <uses-permission android:name="android.permission.READ_CALENDAR"/>
于 2012-12-21T09:45:07.083 に答える