0

マニフェストで SMS を処理するために、BroadcastReceiver を静的に登録しています。アプリケーションの実行中にそのレシーバークラスの onReceive() メソッドが呼び出されたかどうかを確認する適切な方法はありますか?

これは、アプリケーションが実行されていないときに SMS を受信した場合にアクティビティを開始できるようにするために必要です。それ以外の場合は、情報を処理して通知を表示するだけです。

4

1 に答える 1

0

Activity.onPause()Activity.onResume()メソッド、および静的ブール値を使用して、アプリケーションの可視性を自分で追跡します。「可視性」ステータスを他のクラスに保存します。Application適切な選択は、または の独自の実装ですService(サービスからアクティビティの可視性を確認したい場合は、このソリューションの [いくつかのバリエーション][4] もあります)。


この例では、1 つのアクティビティのスケルトン コードを提供しますが、複数のアクティビティを追跡する必要がある場合は、さらにブール値を追加できます。

カスタム クラスを実装します (静的メソッドApplicationに注意してください)。isActivityVisible()

    public class MyApplication extends Application {

      public static boolean isActivityVisible() {
        return activityVisible;
      }  

      public static void activityResumed() {
        activityVisible = true;
      }

      public static void activityPaused() {
        activityVisible = false;
      }

      private static boolean activityVisible;
    }

アプリケーション クラスを に登録しますAndroidManifest.xml

    <application
        android:name="your.app.package.MyApplication"
        android:icon="@drawable/icon"
        android:label="@string/app_name" >

プロジェクト内のすべてにonPauseandを追加します (必要に応じてアクティビティの共通の祖先を作成することもできますが、アクティビティがすでに/などから拡張されている場合は、以下を手動で記述する必要があります)。onResumeActivityMapActivityListActivity

    @Override
    protected void onResume() {
      super.onResume();
      MyApplication.activityResumed();
    }

    @Override
    protected void onPause() {
      super.onPause();
      MyApplication.activityPaused();
    }
于 2012-12-17T14:00:42.613 に答える