我收到了来自服务器的响应,我在android中解析了该响应,现在我必须从该响应中设置通知标题和文本。我的意思是来自那个特定的功能。
这里我将ParseList()
函数放在我解析响应的位置。
private void parseList(Bundle bundle) {
String id,name,photo,updates;
try {
JSONObject json = new JSONObject();
Set<String> keys = bundle.keySet();
for (String key : keys) {
try {
json.put(key, bundle.get(key));
} catch (JSONException e) {
e.printStackTrace();
}
}
JSONArray jsonarray = new JSONArray(json.getString("response"));
Log.e("","Hi"+jsonarray);
for (int i = 0; i < jsonarray.length(); i++) {
JSONObject jsonObjectmain = jsonarray .getJSONObject(i);
JSONArray array = jsonObjectmain.getJSONArray("updates");
for (int j = 0; j < array.length(); j++) {
JSONObject jsonObject = array.getJSONObject(j);
id = jsonObject.getString("id").toString();
name = jsonObject.getString("name").toString();
photo = jsonObject.getString("photo").toString();
updates = jsonObject.getString("updates").toString();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
有一个名为name,updates和photo的参数。现在我必须从这个响应设置通知标题我如何设置那个东西..?
我有onMessage()
方法,但我怎样才能将这些值放入其中。 ??
这是我的通知的onMessage()方法......
@Override
protected void onMessage(Context context, Intent data) {
String message;
message = data.getExtras().getString("name");
Intent intent = new Intent(this, MyActivity.class);
parseList(data.getExtras());
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification = new Notification.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.setWhen(System.currentTimeMillis())
.setContentTitle(message)
.setContentText(message).setContentIntent(pIntent)
.getNotification();
notification.defaults |= Notification.DEFAULT_SOUND;
notification.flags |= Notification.FLAG_AUTO_CANCEL;
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.notify(R.string.app_name, notification);
{
PowerManager pm = (PowerManager) context
.getSystemService(Context.POWER_SERVICE);
final PowerManager.WakeLock mWakelock = pm.newWakeLock(
PowerManager.FULL_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP, "GCM_PUSH");
mWakelock.acquire();
notification.defaults|=Notification.DEFAULT_VIBRATE;
Timer timer = new Timer();
TimerTask task = new TimerTask() {
public void run() {
mWakelock.release();
}
};
timer.schedule(task, 5000);
}
}
答案 0 :(得分:0)
首先,您的通知消息必须包含不同键中的值。
array( "title" => $title, "message" => $message )
上面的代码是php服务器端示例数组数据,它实际上被添加到'data'
密钥,然后使用不同的服务器将数据发送到应用程序。我使用过GCM,从服务器消息接收数据时从bundle获取上述密钥数据。
Notification notification = new Notification.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.setWhen(System.currentTimeMillis())
.setContentTitle(title)
.setContentText(message).setContentIntent(pIntent)
.getNotification();
在这里,您可以检查setContentTitle
是否用于添加“标题”,setContentText
是“subTitle”或消息
答案 1 :(得分:-1)
您应该使用NotificationCompat.Builder
来设置通知的标题,图标,内容等。这是一个例子:
private NotificationCompat.Builder mBuilder;
mBuilder = new NotificationCompat.Builder(
this).setSmallIcon(R.drawable.whitelogo)
.setLargeIcon(anImage)
.setContentTitle(title); //set smallIcon,largeIcon, contentTitle for your notification.
并添加通知:
Notification.Builder notification = new Notification.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.setWhen(System.currentTimeMillis())
.setContentTitle(message)
.setContentText(message)
.setContentIntent(pIntent);
notificationManager.notify(NOTIFICATION_ID_NOTIF, notification.build());
<强>更新强>
它不适用于您的情况,因为String
中没有name
密钥bundle
,因此这将返回null:
message = data.getExtras().getString("name");
所以请在parseList
方法中移动您的通知代码,因为您已经提取了所有值(ID,名称,照片,更新)。