Я использую сервисы Google Play для создания достижений для игры в андроид.Интеграция достижений Google Play и андроидных уведомлений
Цель: В моем onAchievmentUnlocked
обратном вызове Я хочу отправить уведомление на устройство, которое открывает экран достижения, когда пользователь касается уведомления (от везде, где они есть).
Что работает:
- Уведомление отправляется правильно и все иконки и т.д. видны. Прикосновение к notificatoin ничего не делает.
- Достижению активность делает работу, так как у меня есть пункт Option Menu для вызова его в приложении с помощью этого кода:
activity.startActivityForResult(gameClient.getAchievementsIntent(), ACHIEVEMENTS_ID);
Что не работает: Прикосновение уведомления не имеет никакого видимого эффекта.
Примечания:
- MinSDKVersion является 14
- TargetSDKVersion является 16
Вот код, у меня есть на данный момент:
@Override
public void onAchievementUnlocked(final String id) {
final Achievement ac = mAchievementManager.getUnlockedAchievements().get(id);
assert(ac!=null);
Uri uri = ac.getUnlockedImageUri();
final Context ctx = this;
ImageManager.OnImageLoadedListener listener = new ImageManager.OnImageLoadedListener() {
@Override
public void onImageLoaded(Uri uri, Drawable drawable) {
Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();
Notification.Builder builder = new Notification.Builder(ctx)
.setContentTitle(APP_TITLE_STRING)
.setContentText(ac.getName() + " achievement unlocked")
.setLargeIcon(bitmap)
.setSmallIcon(R.drawable.ic_trophy);
Intent intent = mLoginFragment.getGamesClient().getAchievementsIntent();
PendingIntent pIntent = PendingIntent.getActivity(ctx, AchievementManager.REQUEST_ACHIEVEMENTS, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
builder.setContentIntent(pIntent);
Notification note;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) note = builder.build();
else note = builder.getNotification();
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1, note);
}
};
mImageManager.loadImage(listener,uri,R.drawable.ic_trophy);
}