Android 本地推送消息到通知栏 NotificationManager 、注册Android Service
转于: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");
}
} 嗯,把发送通知的代码复制到这里循环几百次。。用来测试退出程序后服务是不是还在跑着。
相关推荐
晴间多云 2014-03-04
toperfect 2013-01-25
whale 2019-06-20
赵振洋Java学生 2018-06-18
najiutan 2018-05-09
zouaiyong 2016-03-24
brucepig 2015-10-03
zyjibai 2015-03-21
cyd 2014-10-28
dianlunhui 2014-04-09
huangkun 2014-04-05
肥皂起司 2014-02-14
wuqiong 2013-11-11
PiYuqing 2013-10-11
jackeysion 2013-03-11
NatureDay 2013-02-17
maplele 2013-01-25
Mexican 2013-01-16