Android 推送通知:在点击通知时获取数据、存储和显示新活动 [英] Android push notification: Get data, store and display on new activity on click of notification

本文介绍了Android 推送通知:在点击通知时获取数据、存储和显示新活动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个具有推送通知功能的应用程序.我按照以下链接作为 Android 推送通知

I am developing an application which is having push notification functionality. I followed the following link as Android Push Notification

我尝试通过对 generateNotification() 代码进行以下更改,成功发送 URL 并在点击通知时打开网页.

I tried and successfully send URL and open the web page on click of notification by doing the following change in code of 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);

我可以借助来自服务器的推送通知发送数据.现在我想要执行以下任务:

I am able to send the data with the help of push notification from the server. Now i want to perform following tasks:

  1. 通过推送通知发送 JSON 数据.

  1. Send JSON data via push notification.

将数据保存到 SQLite 数据库中.

Save the data into SQLite database.

点击推送通知打开新活动.

Open new activity on click of push notification.

显示来自新活动推送通知的数据.

Display data coming from push notification of new activity.

如果应用程序关闭,那么在点击通知后应用程序就会启动.

If the application is closed so after click on notification the app get started.

所以请指导我应该遵循哪些步骤来执行上述任务.

So please guide me what steps should i follow to perform the above task.

推荐答案

我解决了以下问题:

  1. 通过推送通知发送 JSON 数据.A. 可以借助4kb大小的PHP JSON服务从SERVER发送数据.

  1. Send JSON data via push notification. A. Able to send the data from SERVER with the help of PHP JSON service of size 4kb.

将数据保存到 SQLite 数据库中.A. onMessage()中推送通知数据时,将数据保存在SQLite中

Save the data into SQLite database. A. Saved the data in SQLite when data comes from push notification in onMessage()

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);
}

  • 点击推送通知打开新活动.A. 我在从 onMessage() 调用的生成通知函数中使用挂起的意图来做到这一点.

  • Open new activity on click of push notification. A. I done this using pending intent in generate notification function called from 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);     
    }
    

  • 显示来自新活动推送通知的数据.A. 这实现了当新活动在点击通知时调用(从上面的第 3 点代码)我在主活动 onCreate() 中从 SQLite 获取数据.

  • Display data coming from push notification of new activity. A. This achieves as when new activity invokes on click of notification (from above point 3 code) I get data from SQLite in main activity onCreate().

    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";
    }
    

  • 如果应用程序关闭,那么在点击通知后应用程序就会启动.A. 这个任务是从第 3 点开始的.

  • If the application is closed so after click on notification the app get started. A. This task is achieved from point no 3.

    这篇关于Android 推送通知:在点击通知时获取数据、存储和显示新活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

  • 查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆