如何使通知仅显示在顶部?

时间:2014-07-18 06:29:51

标签: android notifications

所以我有这个代码

public class notif extends Activity {
private static final int NOTIFY_ME_ID=1337;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        final NotificationManager mgr=(NotificationManager)this.getSystemService(Context.NOTIFICATION_SERVICE);
        Notification note=new Notification(R.drawable.icon,"New Problem ",System.currentTimeMillis());
        note.flags|=Notification.FLAG_AUTO_CANCEL;
        PendingIntent i=PendingIntent.getActivity(this, 0,new Intent(this,list.class), 0);
        note.setLatestEventInfo(this,"Problem Occured","Click to see the problem",i);
        mgr.notify(NOTIFY_ME_ID,note);
}

此代码是关于发送通知但我希望它只显示在我的通知顶部而不是首先打开任何页面,所以它就像通知可以出现在主菜单中而不首先打开任何页面像。短信通知只显示在顶部而不必查看整个短信,直到我们点击通知,所以有人可以帮我这个吗? :)

2 个答案:

答案 0 :(得分:0)

    Create a class NotificationAlert and paste the code below there:

    import android.os.Bundle;
    import android.app.Activity;
    import android.app.Notification;
    import android.app.NotificationManager;
    import android.app.PendingIntent;
    import android.content.Context;
    import android.content.Intent;

    public class NotificationAlert extends Activity {

        private static final int NOTIFY_ME_ID=1337;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.notification_alert);

            /*********** Create notification ***********/

            final NotificationManager mgr=
                (NotificationManager)this.getSystemService(Context.NOTIFICATION_SERVICE);
            Notification note=new Notification(R.drawable.stat_notify_chat,
                                                            "Android Example Status message!",
                                                            System.currentTimeMillis());

            // This pending intent will open after notification click
            PendingIntent i=PendingIntent.getActivity(this, 0,
                                                    new Intent(this, NotifyMessage.class),
                                                    0);

            note.setLatestEventInfo(this, "Android Example Notification Title",
                                    "This is the android example notification message", i);

            //After uncomment this line you will see number of notification arrived
            //note.number=2;
            mgr.notify(NOTIFY_ME_ID, note);


        }
    }

Create a class NotifyMessage  and paste the code below there:

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class NotifyMessage extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        TextView txt=new TextView(this);

        txt.setText("Activity after click on notification");
        setContentView(txt);
    }
}

答案 1 :(得分:0)

我想我现在知道我必须使用服务,这是制作该服务的代码希望它有助于其他

public class servicenotif extends Service {
private static final String TAG = "servicenotif";
private static final int NOTIFY_ME_ID=1337;
private String url="Your URL";
SharedPreferences mPrefs;


@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}
 @Override
    public void onCreate() {

     //Untuk bikin alarm yang ngecek ke database setiap 30 detik
        Log.d(TAG, "onCreate");
        Intent i = new Intent(this, servicenotif.class);
        PendingIntent pintent = PendingIntent.getService(this, 0, i,0);
        AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
        alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 30*1000, pintent);


    }
 @Override
    public void onStart(Intent intent, int startId) {
     //buat preference
     new LoginAsyncTask().execute();






    //Note: You can start a new thread and use it for long background processing from here.
    }
 class LoginAsyncTask extends AsyncTask<String, Integer, String> {
        String response = "";
        ProgressDialog dialog;
        //step2
        @Override
        protected String doInBackground(String... params) {

            // TODO Auto-generated method stub
            try {





                //publishProgress(190);


                mPrefs = getSharedPreferences("Preference", Context.MODE_PRIVATE);
                 //ngambil data preference
                 String txtTransID=mPrefs.getString("tid", "");
                 if(txtTransID.equals("")){
                     txtTransID="0";
                 }
                 int t=Integer.valueOf(txtTransID);
                 //membuat notifikasi yang muncul apabila ada problem dan hanya muncul lagi apabila ada problem baru
                 JSONObject json = JSONfunctions.getJSONfromURL("Your URL");
                 JSONObject js = JSONfunctions.getJSONfromURL("Your URL");
                 JSONObject j = JSONfunctions.getJSONfromURL("Your URL");
                 try{

                        JSONArray  makanan = json.getJSONArray("makanan");

                        for(int i=0;i<makanan.length();i++){
                            HashMap<String, String> map = new HashMap<String, String>();
                            JSONObject jsonobj = makanan.getJSONObject(i);
                            map.put("id",jsonobj.getString("Status"));
                            //mengecek status yang berubah dari nol menjadi 1
                            if(jsonobj.getString("Status").equals("1")){
                                JSONArray aku=js.getJSONArray("makanan");
                                for(int a=0;a<aku.length();a++)
                                {
                                    HashMap<String, String> mp = new HashMap<String, String>();
                                    JSONObject jsb = aku.getJSONObject(a);
                                    mp.put("take", jsb.getString("Taken"));
                                    //mengecek Taken yang belum diambil
                                    if(jsb.getString("Taken").equals("null")){

                                        JSONArray tid=j.getJSONArray("makanan");
                                        for(int Ti=0;Ti<tid.length();Ti++){
                                            HashMap<String,String> trans=new HashMap<String, String>();
                                            JSONObject jo=tid.getJSONObject(Ti);
                                            trans.put("trans", jo.getString("Trans_ID"));
                                            int TID;
                                            //mengecek Trans_ID yang ditambahkan apa ada yang baru atau tidak
                                            if(jo.getString("Trans_ID").equals("")){
                                                TID=0;
                                            }
                                            else{
                                                TID=Integer.valueOf(jo.getString("Trans_ID"));
                                            }
                                            if(t<TID){
                                                Editor editor = mPrefs.edit();
                                                editor.putString("tid", jo.getString("Trans_ID"));
                                                editor.commit();
                                        map.put("nama", jsonobj.getString("Andon_Type"));
                                        map.put("harga",    jsonobj.getString("Line"));
                                        String andon=jsonobj.getString("Andon_Type");
                                        String line=jsonobj.getString("Line");
                                        NotificationManager mgr=(NotificationManager)servicenotif.this.getSystemService(Context.NOTIFICATION_SERVICE);
                                        Notification note=new Notification(R.drawable.icon,"New Problem ",System.currentTimeMillis());
                                        note.flags|=Notification.FLAG_AUTO_CANCEL;
                                        PendingIntent b=PendingIntent.getActivity(servicenotif.this, 0,new Intent(servicenotif.this,list2.class),PendingIntent.FLAG_ONE_SHOT);          
                                        note.setLatestEventInfo(servicenotif.this,"Problem Occured","Click to see the list of problem",b);
                                        note.defaults=Notification.DEFAULT_ALL;
                                        mgr.notify(NOTIFY_ME_ID,note);
                                            }
                                            //membuat notifikasi muncul lagi apabila data di reset
                                            else if(t>TID){
                                                Editor editor = mPrefs.edit();
                                                editor.putString("tid", "");
                                                editor.commit();
                                            }
                                        }



                            }
                                }

                        }

                 }



                 }




                 catch(JSONException e){


                 }

            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
            publishProgress(190);
            return null;
        }
        //last step
        @Override
        protected void onPostExecute(String result) {









            //dialog.cancel();


        }

        private void onCreate(Object object) {
            // TODO Auto-generated method stub

        }
        @Override
        protected void onProgressUpdate(Integer... values) {
            // TODO Auto-generated method stub
            // biasanya untuk progress download
            int nilai = values[0];
            // didapat dari publish progress

        }
//step1
        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            // buat bikin dialog loading
            /*dialog = ProgressDialog.show(list.this, "Loading",
                    "Please wait..");*/
            super.onPreExecute();


        }
        public void write(String fileName){
            BufferedWriter bw=null;
            try{
                bw=new BufferedWriter(new OutputStreamWriter(openFileOutput(fileName,Context.MODE_PRIVATE)));
            }
            catch(Exception e){

            }
        }


    }

 private void getRequest(String Url2) {
    // TODO Auto-generated method stub
     HttpClient client = new DefaultHttpClient();
        HttpGet request = new HttpGet(url);
        try {
            HttpResponse response = client.execute(request);


        } catch (Exception ex) {
            Toast.makeText(this, "Penghandelan Gagal !", Toast.LENGTH_SHORT)
                    .show();
        }

}
private String request(HttpResponse response) {
    // TODO Auto-generated method stub
    String result = "";

    try {
        InputStream in = response.getEntity().getContent();
        BufferedReader reader = new BufferedReader(
                new InputStreamReader(in));
        StringBuilder str = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            str.append(line + "\n");
        }
        in.close();
        result = str.toString();
    } catch (Exception ex) {
        result = "Error";
    }
    return result;
}
@Override
//untuk logout mematikan notifikasi dan alarm supaya tidak menjalankan service lagi
    public void onDestroy() {
    NotificationManager mgr=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
    mgr.cancelAll();
        Toast.makeText(this, "Log out successfull", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onDestroy");
        PendingIntent i=PendingIntent.getService(this, 0,new Intent(this,servicenotif.class), 0);
        AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
        alarm.cancel(i);

    }

希望这会有所帮助