Ich arbeite an Push-Benachrichtigung in Android, wo ich eine unten Methode verwende, um Benachrichtigung anzuzeigen, aber das Problem ist, dass jetzt ActivityManager.getRunningTasks (1); wird veraltet. Von einer stackoverflow Frage las ich: "Sie können getAppTasks()
verwenden, die List<AppTask>
zurückbringt, wo Sie die RecentTaskInfo
mit getTaskInfo
erhalten können" aber ich kann es nicht herausfinden, wie man es benutzt. Bitte helfen Sie mir hier in dieser Hinsicht.ActivityManager.getRunningTasks ist veraltet android
private void postNotification(Context ctx, Intent intent) {
try {
if (intent == null) {
Log.d(TAG, "Receiver intent null");
} else {
String action = intent.getAction();
if (action.equals("com.ziza.cy.UPDATE_STATUS")) {
JSONObject json = new JSONObject(intent.getExtras()
.getString("com.parse.Data"));
String type = json.getString("type");
if (type.equals("AlertNotification")) {
String msg = json.getString("header");
String title = "ncy";
ActivityManager am = (ActivityManager) ctx
.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> taskInfo = am.getRunningTasks(1);
ComponentName componentInfo = taskInfo.get(0).topActivity;
// don't show notification if app is in foreground
if (componentInfo.getPackageName().equalsIgnoreCase(
ctx.getPackageName())) {
// send broadcast receiver
Intent intentBroad = new Intent();
intentBroad.setAction(Constants.sNOTIFICATION);
intentBroad.putExtra("msg", msg);
intentBroad.putExtra("title", title
+ " "
+ taskInfo.get(0).topActivity.getClass()
.getSimpleName());
ctx.sendBroadcast(intentBroad);
} else {
// Activity Not Running
// Generate Notification
Intent intnt = new Intent(ctx, LogInActivity.class);
PendingIntent contentIntent = PendingIntent
.getActivity(ctx, 0, intnt, 0);
intnt.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_NEW_TASK);
NotificationCompat.Builder builder = new NotificationCompat.Builder(
ctx)
.setContentTitle(title)
.setContentText(msg)
.setTicker(msg)
.setSound(
RingtoneManager
.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
.setStyle(
new NotificationCompat.BigTextStyle()
.bigText(msg))
.setAutoCancel(true)
.setSmallIcon(R.drawable.iconed)
.setOnlyAlertOnce(true)
.setDefaults(Notification.DEFAULT_VIBRATE);
Uri alarmSound = RingtoneManager
.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
builder.setSound(alarmSound);
builder.setContentIntent(contentIntent);
NotificationManager notificationManager = (NotificationManager) ctx
.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, builder.build());
}
}
}
}
} catch (JSONException e) {
Log.d(TAG, "JSONException: " + e.getMessage());
}
}
danke für Ihre Antwort hier. Können Sie mir bitte erklären, wie ich die folgende Bedingung erfülle, möchte ich sie wie die folgende Bedingung einbetten: ActivityManager am = (ActivityManager) ctx.getSystemService (Context.ACTIVITY_SERVICE); \t \t \t \t \t \t \t \t \t \t \t \t List = Taskinfo am.getRunningTasks (1); \t \t \t \t \t \t Komponentenname componentInfo = taskInfo.get (0) .topActivity; –