Android发送通知应用程序

时间:2016-06-06 07:44:06

标签: android

我正在为我的大学项目创建一个Android应用程序。我想要包含一个告示板,如果发布通知,它会向所有相同的应用程序发送通知。登录的人可以查看通知。该通知将存储在包含具有5个表的表通知的MySql数据库中:     通知 - 号码通知 - 详细通知时间通知 - 日期发布。我到处搜索,但我找到的只是Google Cloud Messing     用于执行此操作的API或REST API。但我不想使用那些。我只想存储发布到数据库中的通知,如果有人登录,他/她会收到发布新通知的通知,并且能够查看它。我还没有完成Java代码,只需要知道如何做到这一点。如果有人可以帮助请。谢谢!!

My XML code: activity_notice.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">


    <TextView
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="RECENT NOTICES"
        android:id="@+id/textView"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textColor="#ff0612"
        android:textSize="30dp"/>

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:id="@+id/noticeText"
        android:hint="Post Notice"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginBottom="42dp"
        android:layout_alignRight="@+id/textView"
        android:layout_alignEnd="@+id/textView" />

    <ImageButton
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:id="@+id/sndnoticeBut"
        android:src="@drawable/send1"
        android:background="@null"
        android:layout_alignTop="@+id/noticeText"
        android:layout_toRightOf="@+id/noticeText"
        android:layout_toEndOf="@+id/noticeText" />

</RelativeLayout>


Java code: Notice.java
import android.app.Activity;
import android.os.Bundle;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;

import android.graphics.Typeface;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;

import android.support.v7.app.NotificationCompat;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
import static java.lang.System.currentTimeMillis;

public class Notice extends Activity
{
    ImageButton notbut;
    EditText nottxt;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_notice);

        notbut=(ImageButton)findViewById(R.id.sndnoticeBut);
        nottxt=(EditText)findViewById(R.id.noticeText);

        notbut.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String tittle = "You Have Received A Message";
                String subject = "New Notice Posted";
                NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
                String body = nottxt.getText().toString().trim();

                NotificationManager notif = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                Notification notify = new Notification(R.drawable.noti, tittle, System.currentTimeMillis());
                PendingIntent pending = PendingIntent.getActivity(getApplicationContext(), 0, new Intent(), 0);

                notify.setLatestEventInfo(getApplicationContext(), subject, body,pending);
                notif.notify(0, notify);
            }
        });
    }
}

1 个答案:

答案 0 :(得分:0)

因此该设备上只有一个设备和一个应用程序。该应用程序有多个用户存储在sqlite数据库中。每个用户都可以在应用程序内编写通知。当其他用户登录时,应向他/她显示书面通知。

您需要的是能够区分某个用户是否看过通知。我建议您扩展users表以添加last_login列,如果此列尚不存在的话。然后,每次用户登录时,使用该列来获取在上次登录日期之后发布的通知。这应该产生用户没有看到的通知。显示通知并将该用户的last_login列设置为最近的日期,以便下次用户登录时不会返回旧通知。