我正在开发一个应用程序,它会收到GCM通知,提醒用户有关促销和类似内容的信息。
到目前为止,我已设法发送和接收通知。这是我的代码:
public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ComponentName comp = new ComponentName(context.getPackageName(), GCMNotificationIntentService.class.getName());
startWakefulService(context, (intent.setComponent(comp)));
setResultCode(Activity.RESULT_OK);
}
}
public class GCMNotificationIntentService extends IntentService {
public static final int notifyID = 1337;
NotificationCompat.Builder builder;
public GCMNotificationIntentService() {
super("GcmIntentService");
}
@Override
protected void onHandleIntent(Intent intent) {
Bundle extras = intent.getExtras();
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
String messageType = gcm.getMessageType(intent);
if (!extras.isEmpty()) {
sendNotification(extras.getString("type"),extras.getString("msg"));
}
GcmBroadcastReceiver.completeWakefulIntent(intent);
}
private void sendNotification(String type, String msg) {
Intent resultIntent = new Intent(this, SplashActivity.class);
resultIntent.putExtra("type", type);
resultIntent.putExtra("msg", msg);
PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0,resultIntent, PendingIntent.FLAG_ONE_SHOT);
NotificationCompat.Builder mNotifyBuilder;
NotificationManager mNotificationManager;
mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotifyBuilder = new NotificationCompat.Builder(this)
.setContentTitle("x")
.setContentText(msg)
.setSmallIcon(R.drawable.ic_launcher);
mNotifyBuilder.setContentIntent(resultPendingIntent);
int defaults = 0;
defaults = defaults | Notification.DEFAULT_LIGHTS;
defaults = defaults | Notification.DEFAULT_VIBRATE;
defaults = defaults | Notification.DEFAULT_SOUND;
mNotifyBuilder.setDefaults(defaults);
mNotifyBuilder.setAutoCancel(true);
mNotificationManager.notify(notifyID, mNotifyBuilder.build());
}
}
问题在于我不知道如何(或在何处)显示消息提醒。
在网上搜索,我找到了一个实现,即使应用程序关闭也会显示消息,但我只需要在应用程序上显示消息,例如:应用程序打开时或应用程序关闭时然后用户打开它。
答案 0 :(得分:0)
Android通知框架旨在显示通知,无论您的应用是否已打开。通知显示在顶部的通知栏中,不会显示在您的活动屏幕中。
如果您不希望在应用程序未运行时显示通知,则可以执行类似于变量isRunning的操作,并在活动的onResume()中将其设置为true,在活动的onPause()中将其设置为false。这样,您现在可以参考以确定应用程序是否正在运行。如果isRunning为false,那么您可以将在后台接收的通知保存到SharedPreferences或数据库中 - 您将在不使用Notification框架的情况下执行此操作。如果应用程序处于打开状态,那么您可以显示消息警报 - 如果您打算使用Notification框架或使用AlertDialog,则可以显示消息警告。