あなたの質問への回答が遅れるかもしれませんが、これを一種の回避策と統合する方法は次のとおりです。
(1) アプリケーション内で、「未読メッセージ」をカウントする変数が必要です。を拡張するクラスを統合することをお勧めしますandroid.app.Application
。これにより、複数のアクティビティなどで変数をグローバルに処理できます。以下に例を示します。
import android.app.Application;
public class DataModelApplication extends Application {
// model
private static int numUnreadMessages;
// you could place more global data here, e.g. a List which contains all the messages
public int getNumUnreadMessages() {
return numUnreadMessages;
}
public void setNumUnreadMessages(int numUnreadMessages) {
this.numUnreadMessages = numUnreadMessages;
}
...
}
アプリケーションを に追加することを忘れないでくださいAndroidManifest
:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:name="name.of.your.package.DataModelApplication" >
<activity ... />
...
</application>
(2)新しいメッセージを受信するたびにセッターを使用して、Activity
またはFragment
あなたがインクリメントします。numUnreadMessages
// within a Fragment you need to call activity.getApplication()
DataModelApplication application = (DataModelApplication) getApplication();
int numUnreadMessages = application.getNumUnreadMessages();
application.setNumUnreadMessages(++numUnreadMessages);
(3) これで、未読メッセージの数で通知を更新できます。
// within your service or method where you create your notification
Intent mainActivityIntent = new Intent(this, MainActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, mainActivityIntent, 0);
DataModelApplication application = (DataModelApplication) getApplication();
int numMessages = application.getNumUnreadMessages();
// build the notification
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// Sets an ID for the notification, so it can be updated
int notifyID = 1;
String contentTitle = "You have " + numMessages + " unread message(s)";
String contentText = "Click here to read messages";
Builder notifyBuilder = new NotificationCompat.Builder(this)
.setContentTitle(contentTitle)
.setContentText(contentText)
.setContentIntent(pIntent)
.setAutoCancel(true)
.setNumber(numMessages) // optional you could display the number of messages this way
.setSmallIcon(R.drawable.ic_launcher);
notificationManager.notify(notifyID, notifyBuilder.build());
(4) ユーザーがメッセージを読むたびに、またはユーザーがその通知をクリックしてアクティビティを開いた場合は、numUnreadMessages の値をリセットまたはデクリメントすることを忘れないでください。手順 (2) に似ていますが、値を減らすか、または に設定し0
ます。
あなた/誰でも始めるのに役立つことを願っています:)