私はAndroidアプリのプラグインを作成しています。私はできるだけ普遍的なものにしようとしています。これが私の問題です。私はプラグインを設計していますので、将来のすべてのアプリケーションでプラグインを簡単に実装できるようになります。プラグインには定期的に通知されるサービスが含まれているという問題があります。ユーザーが通知バーを開いて通知に触れると、もともとサービスを開始したアクティビティを開く必要があります。サービスを開始したアクティビティを確認するにはどうすればよいですか?
サービスはこのコードを使用して開始されます。
startService(new Intent(this, myService.class));
をし、サービスはこのコードを使用して通知を起動します:
現在Intent notificationIntent = new Intent(this, myClass.class);
、myClass.class
が通知にハードコードされています。つまり、何種類のアプリケーションを作成しても、このプラグインを使用すると、サービス「myClass」を起動するクラスの名前を指定する必要があります。
サービスを開始した元のアクティビティを一般的な方法で取得したいと考えています。
に私をもたらしたので、私は、クラスを置けばいいのかParceablesを使用してのパスに私を指しているためエクストラ?私は文字列、intsなどを行う方法を知っています...しかし、余分なクラスを渡すためのオプションはありません。 –
@ LucasBailey:クラスは役に立たない。複数のアプリケーションが関わっていることを示しています。サービスは他のプロジェクトの 'Class'オブジェクトを持つことはできません。最善の答えは、 'Notification'に入れられる' PendingIntent'を余分に渡すことです。クライアントアクティビティは、それに関係するフラグなどの決定を行うことができます。 'PendingIntent'は' Parcelable'なので、 'Intent'余分に入ることができます。 – CommonsWare
これは通知サービスの仕組みです。ユーザーが通知を選択したときに起動するクラスを指定する必要があります(例:Intent notificationIntent = new Intent(this、someActivity.class);私は保留中の意図を追い越すのを見ます。なぜ私はそれを考えなかったのか分からない。 –