ハロー!アンドロイド通知を使用してアプリケーションにデータを渡す正しい方法
通知に関するご質問があります。
受信した特定のコンテンツのSMSを解析するアプリケーションを作成したいとします。 smsが特定の内容を含んでいる場合、それは解析され、データが抽出されます。通知が作成され、表示されるはずです。ユーザーが通知を選択すると、抽出されたデータを使用してアプリケーションを呼び出す必要があります。アプリケーションが実行されていない場合は、起動する必要があります。すでに実行中の場合は、インスタンスを表示して情報を処理する必要があります。
これを解決するために、私は次のことを行いました: ブロードキャスト受信機は、SMSを聞いてそれらを解析します。私はプロセスをのonCreate(...)メソッドでインテントを呼び出す
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(icon, tickerText, when); Bundle bundleNotification = creatingNotificationBundle(...);
Intent notificationIntent = new Intent(Intent.ACTION_MAIN); notificationIntent.setClassName(...); notificationIntent.putExtras(bundleNotification);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0); notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); mNotificationManager.notify((int) System.currentTimeMillis(), notification);
活性:私は、次のコードを使用するアプリケーションを起動します。これは、アプリケーションが実行されていないときに正常に動作します。実行中のインスタンスがすでに存在する場合、そのインスタンスが呼び出され、データは渡されません(または、正しいメソッドを上書きしない)。私はonResume()が呼び出されたのを見ました。しかし、このメソッドはパラメータとして意図を持っていません。この問題を解決する最良のアイデアは何ですか?
私はこの仕事を得るために(私の意見では)非常に汚い回避策をした:
- 私は一時的な活動
- を作成した私は、この新しい活動やセットを呼び出すこと以外は、上記と同じコードを実行しますフラグnotificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)とnotificationIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK)
- このアクティビティは、先に解析されたデータを転送するブロードキャストとインテントの両方を最初に送信します。
このようにして、メインアプリケーションはデータを取得します。すでに実行中の場合は、ブロードキャストを受信してインテントとともに前面に表示され、実行されていない場合は、onCreate(...)メソッドでインテントからデータを受信します。 しかし、これはデータをリダイレクトして何も実行しないためにダミーのアクティビティを作成するにはかなり汚れているので、これはこの問題の正しい解決策ではないと思います。
ご意見やご提案は高く評価されます。
おかげ