42

ユーザーがいつ電話の電源を切るかを知る必要があります。ユーザーの電話の電源がオフになったときに通知するブロードキャスト (または類似のもの) はありますか?

4

3 に答える 3

68

電話がシャットダウンしようとしているときにブロードキャストされるACTION_SHUTDOWNインテントを使用できます。ドキュメントには次のように記載されています。

フォアグラウンド アクティビティも一時停止されるため、アプリは通常、これを処理する必要はありません。

つまり、Activity のすべてのライフサイクル イベントに適切に応答する場合、シャットダウンに関連する特定のことを本当に実行したい場合を除き、これを使用する必要はありません。

ACTION_SHUTDOWNインテントは API レベル 4 で導入されました。つまり、Android 1.6 以降を実行しているスマートフォンでのみ送信されます

でブロードキャストをトラップしますBroadcastReceiver。次のようになります。

public class ShutdownReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        //Insert code here
    }

}

次のようなマニフェストのエントリも必要です。

<receiver android:name=".ShutdownReceiver">
  <intent-filter>
    <action android:name="android.intent.action.ACTION_SHUTDOWN" />
  </intent-filter>
</receiver>

何をしているかに応じて、別のオプションは、電話の再起動時に送信されるACTION_BOOT_COMPLETEDインテントを使用することです。

于 2010-02-03T06:46:54.557 に答える
20

に加えて、intent-filter にACTION_SHUTDOWN追加する必要があります。一部の HTC デバイス (Evo 4g など) では常にブロードキャストされるとは限りません。 具体的には、[再起動] を選択した場合はブロードキャストされますが、[電源オフ] を選択した場合は代わりにブロードキャストされます。android.intent.action.QUICKBOOT_POWEROFF
ACTION_SHUTDOWN
ACTION_SHUTDOWNQUICKBOOT_POWEROFF

于 2011-10-27T18:08:02.483 に答える
0

これを処理する適切な方法は、Dave Webb の発言を拡張することです。

Android アクティビティ ライフサイクル関数をオーバーライドできます

protected void onPause();
protected void onResume();

ほとんどのシナリオでは、これらを実装するだけで十分であり、特に「電源オフ」イベントを処理する必要はありません。

Android Web サイトと、このライフサイクルに関する質問への回答には、さらに多くの情報があります。

于 2013-05-22T08:59:10.637 に答える