0

私のアプリケーションは、起動されるインテントに依存しているACTION_USER_PRESENTため、マニフェストにレシーバーを設定し、インテントを受信したときにサービスを開始するクラスを用意しました。

ただし、ユーザーが WidgetLocker などのロック画面置換アプリを使用している場合、ACTION_USER_PRESENTインテントが送信されないか、何度も送信される可能性があります。(5回送信されたら...) WidgetLockerのWebサイトは、アプリケーションロック解除のために独自のインテントを送信すると説明していますcom.teslacoilsw.widgetlocker.intent.UNLOCKED. WidgetLocker の特定の構成ではACTION_USER_PRESENT、ユーザーが画面のロックを解除する前に が起動される場合があるため、 のチェックをセットアップしてから、インテントcom.teslacoilsw.widgetlocker.intent.LOCKEDを受信して​​作業を行うのを待つのが最善であると言われました。UNLOCKED

私の問題は、サードパーティの意図のためにレシーバーを設定する方法がわからないことです。マニフェストの受信機にアクションを追加しました 主に、インテントを取得した場合、インテントLOCKEDを無視しACTION_USER_PRESENTて代わりにインテントを待ちたいのですUNLOCKEDが、別のインテントを受け取ったときにインテントを待つ方法がわかりません。

4

1 に答える 1

1

主に、LOCKED インテントを取得した場合、ACTION_USER_PRESENT インテントを無視し、代わりに UNLOCKED インテントを待ちたいのですが、別のインテントを受信したときにインテントを待つ方法がわかりません。

ステップ #1: BroadcastReceiversWidgetLocker アクションとACTION_USER_PRESENT.

ステップ #2: を受け取ったら、 と を使用しLOCKEDて受信機を無効にします。PackageManagersetComponentEnabledSetting()ACTION_USER_PRESENT

ステップ #3: を受け取ったら、 と をUNLOCKED使用PackageManagersetComponentEnabledSetting()て受信機を再度有効にしますACTION_USER_PRESENT

これは、エッジ ケース (たとえば、ユーザーが 中にバッテリーを飛び出させるLOCKED) では少し厄介になる可能性がありますが、これは出発点です。

于 2012-04-28T16:31:09.470 に答える