Android 本地推送消息到通知栏 NotificationManager 、注册Android Service

zouaiyong 2014-03-13

转于:http://blog.csdn.net/huutu/article/details/12977645

------------------------------------------------------------------------------------------------------------------

Android Service ,在退出程序之后 ,仍然留在后台作为服务项做一些事情,比如说监听用户输入之类的。。。。

这里用来做后台的消息推送,像游戏中的广告可以这么做。

Android工程里面有两个Activity、一个Service重写。

MainActivity 是进入游戏的界面。

SecondActivity 是打开通知,点击推送的消息打开的Activity 。

push_service 是重写的Service 。

MainActivity

package com.example.androidnotification;  
  
import android.os.Bundle;  
import android.R.integer;  
import android.app.Activity;  
import android.app.Notification;  
import android.app.NotificationManager;  
import android.app.PendingIntent;  
import android.content.Context;  
import android.content.Intent;  
import android.util.Log;  
import android.view.Menu;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
  
public class MainActivity extends Activity {  
      
    private Button button1;  
    private Button button2;  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
          
        //获取到通知管理器  
        NotificationManager mNotificationManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);  
          
        //定义内容  
        int notificationIcon=R.drawable.icon;  
        CharSequence notificationTitle="测试通知栏--title";  
        long when = System.currentTimeMillis();  
          
        Notification notification=new Notification(notificationIcon, notificationTitle, when);  
          
        notification.defaults=Notification.DEFAULT_ALL;  
          
        Intent intent=new Intent(MainActivity.this,SecondActivity.class);  
        PendingIntent pendingIntent=PendingIntent.getActivity(MainActivity.this, 0, intent, 0);  
        notification.setLatestEventInfo(this,"测试展开title", "测试展开内容",pendingIntent);  
          
        if(notification!=null)  
        {  
            Log.e("notifacation", "notifacation is ok");  
            mNotificationManager.notify(1000, notification);  
        }  
          
        button1=(Button)findViewById(R.id.button1);  
        button1.setOnClickListener(new OnClickListener() {  
              
            @Override  
            public void onClick(View arg0) {  
                // TODO Auto-generated method stub  
                Intent pushIntent=new Intent("com.example.androidnotification.push_service");  
                startService(pushIntent);  
                  
            }  
        });  
          
        button2=(Button)findViewById(R.id.button2);  
        button2.setOnClickListener(new OnClickListener() {  
              
            @Override  
            public void onClick(View v) {  
                // TODO Auto-generated method stub  
                MainActivity.this.finish();  
            }  
        });  
          
    }  
  
    @Override  
    public boolean onCreateOptionsMenu(Menu menu) {  
        // Inflate the menu; this adds items to the action bar if it is present.  
        getMenuInflater().inflate(R.menu.main, menu);  
        return true;  
    }  
  
}  

打开程序的时候发送了一个通知。。。

主要就是获取到通知管理器然后新建一个通知,然后发送这个通知!。。。

SecondActivity 

package com.example.androidnotification;  
  
import android.app.Activity;  
import android.os.Bundle;  
  
public class SecondActivity extends Activity {  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState)  
    {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.secondactivity);  
    }  
}  

第二个Activity只是为了存在而存在,没有啥不懂。。

push_service

重写了Service ,注册一个Service 。。

package com.example.androidnotification;  
  
import android.app.Activity;  
import android.app.Notification;  
import android.app.NotificationManager;  
import android.app.PendingIntent;  
import android.app.Service;  
import android.content.Context;  
import android.content.Intent;  
import android.os.Handler;  
import android.os.IBinder;  
import android.util.Log;  
  
public class push_service extends Service {  
  
    @Override  
    public IBinder onBind(Intent arg0) {  
        // TODO Auto-generated method stub  
        return null;  
    }  
      
    @Override  
    public void onCreate()  
    {  
        super.onCreate();  
        Log.i("push_service", "push_service onCreate");  
    }  
      
    @SuppressWarnings("deprecation")  
    @Override  
    public void onStart(Intent intent,int startId)  
    {  
        super.onStart(intent, startId);  
        Log.i("push_service", "push_service start");  
          
        new Thread(new Runnable() {  
              
            @Override  
            public void run() {  
                // TODO Auto-generated method stub  
                try {  
                    for (int i = 0; i <100; i++) {  
                        Thread.sleep(3000);  
                        Log.i("push_service", "push_service foreach");  
                          
                          
                          
                        //获取到通知管理器  
                        NotificationManager mNotificationManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);  
                          
                        //定义内容  
                        int notificationIcon=R.drawable.icon;  
                        CharSequence notificationTitle="测试通知栏--title";  
                        long when = System.currentTimeMillis();  
                          
                        Notification notification=new Notification(notificationIcon, notificationTitle, when);  
                          
                        notification.defaults=Notification.DEFAULT_ALL;  
                          
                        Intent intent=new Intent(getApplicationContext(),SecondActivity.class);  
                        PendingIntent pendingIntent=PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);  
                        notification.setLatestEventInfo(getApplicationContext(),"测试展开title", "测试展开内容",pendingIntent);  
                          
                        if(notification!=null)  
                        {  
                            Log.e("notifacation", "notifacation is ok");  
                            mNotificationManager.notify(1000+i, notification);  
                        }  
                          
                          
                    }  
                      
                } catch (InterruptedException e) {  
                    // TODO Auto-generated catch block  
                    e.printStackTrace();  
                }  
  
            }  
        }).start();  
    }  
      
    @Override  
    public void onDestroy()  
    {  
        super.onDestroy();  
        Log.i("push_service", "push_service destroy");  
    }  
  
}  

嗯,把发送通知的代码复制到这里循环几百次。。用来测试退出程序后服务是不是还在跑着。

相关推荐