デバイスがGCMからプッシュ通知を受け取ったときにアプリを開くと同時に、アプリが既に閉じられています。このコードを試しましたが、一部のデバイスでは動作しません。 は、以下の私のコードスニペット、アプリが閉じているときにプッシュ通知(GCM)を受信した場合、すべての端末でAndroidアプリを開く方法は?
@Override
public void onHandleIntent(Intent intent) {
notificationManager(this, getString(R.string.new_ride), true);
}
public static void notificationManager(Context context, String message, boolean
ring) {
try {
long when = System.currentTimeMillis();
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Log.v("message",","+message);
Intent notificationIntent = new Intent(context, SplashNewActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setAutoCancel(true);
builder.setContentTitle(context.getString(R.string.app_name));
builder.setStyle(new NotificationCompat.BigTextStyle().bigText(message));
builder.setContentText(message);
builder.setTicker(message);
if(ring){
builder.setLights(Color.GREEN, 500, 500);
}
else{
builder.setDefaults(Notification.DEFAULT_ALL);
}
builder.setWhen(when);
builder.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher));
builder.setSmallIcon(R.drawable.notif_icon);
builder.setContentIntent(intent);
Notification notification = builder.build();
notificationManager.notify(NOTIFICATION_ID, notification);
//Open the App while new ride request arrives
Intent dialogIntent = new
Intent(getBaseContext(),SplashNewActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(dialogIntent);
} catch (Exception e) {
e.printStackTrace();
}
}
私に知らせてください、それはすべてのデバイスで可能であるか、デバイスに依存しています。 ありがとうございます。
「デバイスがGCMからプッシュ通知を受信すると同時にアプリを開くpは既に閉鎖されています " - ユーザーは、何をしているのか途中で自分の活動を中断することに感謝しないかもしれません。ユーザーは、さまざまな方法(評価の低下、身体的暴力など)であなたに不満を表明することがあります。 「このコードを試してみると、すべてのデバイスではない一部のデバイスで動作します」 - **すべてのデバイスではないことを意味します**を詳しく説明してください。デバッガを使用したり、ログを記録したりして、何が起こるかを確認するにはどうすればよいですか? – CommonsWare