Man*_*gde 3 notifications android push-notification android-notifications google-cloud-messaging
我正在开发一个具有推送通知功能的应用程序.我按照以下链接作为Android推送通知
我尝试并成功发送URL并通过在generateNotification()代码中进行以下更改来点击通知打开网页.
/**
* Issues a notification to inform the user that server has sent a message.
*/
private static void generateNotification(Context context, String message) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.ic_launcher, "Message received", System.currentTimeMillis());
// Hide the notification after its selected
notification.flags |= Notification.FLAG_AUTO_CANCEL;
//adding LED lights to notification
notification.defaults |= Notification.DEFAULT_LIGHTS;
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(message));
//startActivity(browserIntent);
//PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
notification.setLatestEventInfo(context, "Message", "New message received", pendingIntent);
notificationManager.notify(0, notification);
Run Code Online (Sandbox Code Playgroud)
我可以在服务器的推送通知的帮助下发送数据.现在我想执行以下任务:
通过推送通知发送JSON数据.
将数据保存到SQLite数据库中.
点击推送通知打开新活动.
显示来自新活动的推送通知的数据.
如果应用程序已关闭,那么点击通知后应用程序就会启动.
因此,请指导我应该遵循哪些步骤来执行上述任务.
Man*_*gde 11
我解决了以下问题:
通过推送通知发送JSON数据.答:能够在大小为4kb的PHP JSON服务的帮助下从SERVER发送数据.
将数据保存到SQLite数据库中.A.当数据来自onMessage()中的推送通知时,在SQLite中保存数据
protected void onMessage(Context context, Intent intent) {
Log.i(TAG, "Received message");
String message = intent.getExtras().getString("price");
Log.d("OnMSG",message);
displayMessage(context, message);
DataBaseHelper dataBaseHelper = new DataBaseHelper(context);
dataBaseHelper.openDataBase();
dataBaseHelper.insertData(message);
dataBaseHelper.close();
// notifies user
generateNotification (context, message);
}
Run Code Online (Sandbox Code Playgroud)点击推送通知打开新活动.答:我使用onMessage()调用的生成通知函数中的待定意图来完成此操作.
private static void generateNotification(Context context, String message) {
int icon = R.drawable.ic_launcher;
long when = System.currentTimeMillis();
NotificationManager notificationManager = (NotificationManager)
context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(icon, message, when);
String title = context.getString(R.string.app_name);
Intent notificationIntent = new Intent(context, MainActivity.class);
notificationIntent.putExtra("ms", message);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT);
notification.setLatestEventInfo(context, title, message, intent);
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.defaults |= Notification.DEFAULT_SOUND;
notification.defaults |= Notification.DEFAULT_VIBRATE;
notificationManager.notify(0, notification);
}
Run Code Online (Sandbox Code Playgroud)显示来自新活动的推送通知的数据.答:这实现了当新活动在点击通知时调用(从第3点代码开始)我在主要活动onCreate()中从SQLite获取数据.
DataBaseHelper dataBaseHelper = new DataBaseHelper(this);
dataBaseHelper.openDataBase();
Cursor c = dataBaseHelper.getData();
String data = null;
if(c.getCount()>0){
if(c.moveToFirst()){
do{
data = c.getString(0);
} while(c.moveToNext());
}
} else {
data = "No Data";
}
Run Code Online (Sandbox Code Playgroud)如果应用程序已关闭,那么点击通知后应用程序就会启动.A.此任务从第3点开始实现.
| 归档时间: |
|
| 查看次数: |
55575 次 |
| 最近记录: |