Android(安卓)本地推送消息到通知栏 NotificationManager 、注册Android(安卓)Service
16lz
2021-12-04
转于:http://blog.csdn.net/huutu/article/details/12977645
------------------------------------------------------------------------------------------------------------------
Android Service ,在退出程序之后 ,仍然留在后台作为服务项做一些事情,比如说监听用户输入之类的。。。。
这里用来做后台的消息推送,像游戏中的广告可以这么做。
Android工程里面有两个Activity、一个Service重写。
MainActivity 是进入游戏的界面。
SecondActivity 是打开通知,点击推送的消息打开的Activity 。
push_service 是重写的Service 。
MainActivity
[java] view plain copy- packagecom.example.androidnotification;
- importandroid.os.Bundle;
- importandroid.R.integer;
- importandroid.app.Activity;
- importandroid.app.Notification;
- importandroid.app.NotificationManager;
- importandroid.app.PendingIntent;
- importandroid.content.Context;
- importandroid.content.Intent;
- importandroid.util.Log;
- importandroid.view.Menu;
- importandroid.view.View;
- importandroid.view.View.OnClickListener;
- importandroid.widget.Button;
- publicclassMainActivityextendsActivity{
- privateButtonbutton1;
- privateButtonbutton2;
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- //获取到通知管理器
- NotificationManagermNotificationManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
- //定义内容
- intnotificationIcon=R.drawable.icon;
- CharSequencenotificationTitle="测试通知栏--title";
- longwhen=System.currentTimeMillis();
- Notificationnotification=newNotification(notificationIcon,notificationTitle,when);
- notification.defaults=Notification.DEFAULT_ALL;
- Intentintent=newIntent(MainActivity.this,SecondActivity.class);
- PendingIntentpendingIntent=PendingIntent.getActivity(MainActivity.this,0,intent,0);
- notification.setLatestEventInfo(this,"测试展开title","测试展开内容",pendingIntent);
- if(notification!=null)
- {
- Log.e("notifacation","notifacationisok");
- mNotificationManager.notify(1000,notification);
- }
- button1=(Button)findViewById(R.id.button1);
- button1.setOnClickListener(newOnClickListener(){
- @Override
- publicvoidonClick(Viewarg0){
- //TODOAuto-generatedmethodstub
- IntentpushIntent=newIntent("com.example.androidnotification.push_service");
- startService(pushIntent);
- }
- });
- button2=(Button)findViewById(R.id.button2);
- button2.setOnClickListener(newOnClickListener(){
- @Override
- publicvoidonClick(Viewv){
- //TODOAuto-generatedmethodstub
- MainActivity.this.finish();
- }
- });
- }
- @Override
- publicbooleanonCreateOptionsMenu(Menumenu){
- //Inflatethemenu;thisaddsitemstotheactionbarifitispresent.
- getMenuInflater().inflate(R.menu.main,menu);
- returntrue;
- }
- }
打开程序的时候发送了一个通知。。。
主要就是获取到通知管理器然后新建一个通知,然后发送这个通知!。。。
SecondActivity
[java] view plain copy- packagecom.example.androidnotification;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- publicclassSecondActivityextendsActivity{
- @Override
- protectedvoidonCreate(BundlesavedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.secondactivity);
- }
- }
第二个Activity只是为了存在而存在,没有啥不懂。。
push_service
重写了Service ,注册一个Service 。。
[java] view plain copy- packagecom.example.androidnotification;
- importandroid.app.Activity;
- importandroid.app.Notification;
- importandroid.app.NotificationManager;
- importandroid.app.PendingIntent;
- importandroid.app.Service;
- importandroid.content.Context;
- importandroid.content.Intent;
- importandroid.os.Handler;
- importandroid.os.IBinder;
- importandroid.util.Log;
- publicclasspush_serviceextendsService{
- @Override
- publicIBinderonBind(Intentarg0){
- //TODOAuto-generatedmethodstub
- returnnull;
- }
- @Override
- publicvoidonCreate()
- {
- super.onCreate();
- Log.i("push_service","push_serviceonCreate");
- }
- @SuppressWarnings("deprecation")
- @Override
- publicvoidonStart(Intentintent,intstartId)
- {
- super.onStart(intent,startId);
- Log.i("push_service","push_servicestart");
- newThread(newRunnable(){
- @Override
- publicvoidrun(){
- //TODOAuto-generatedmethodstub
- try{
- for(inti=0;i<100;i++){
- Thread.sleep(3000);
- Log.i("push_service","push_serviceforeach");
- //获取到通知管理器
- NotificationManagermNotificationManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
- //定义内容
- intnotificationIcon=R.drawable.icon;
- CharSequencenotificationTitle="测试通知栏--title";
- longwhen=System.currentTimeMillis();
- Notificationnotification=newNotification(notificationIcon,notificationTitle,when);
- notification.defaults=Notification.DEFAULT_ALL;
- Intentintent=newIntent(getApplicationContext(),SecondActivity.class);
- PendingIntentpendingIntent=PendingIntent.getActivity(getApplicationContext(),0,intent,0);
- notification.setLatestEventInfo(getApplicationContext(),"测试展开title","测试展开内容",pendingIntent);
- if(notification!=null)
- {
- Log.e("notifacation","notifacationisok");
- mNotificationManager.notify(1000+i,notification);
- }
- }
- }catch(InterruptedExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
- }
- }).start();
- }
- @Override
- publicvoidonDestroy()
- {
- super.onDestroy();
- Log.i("push_service","push_servicedestroy");
- }
- }
嗯,把发送通知的代码复制到这里循环几百次。。用来测试退出程序后服务是不是还在跑着。
更多相关文章
- Android自动化测试之MonkeyRunner之MonkeyRunner(九)
- Android单元测试Unable to find instrumentation target package
- Android之Notification
- Android(安卓)CTS(兼容性测试)
- Android(安卓)状态栏通知Notification
- Android测试原理(二)
- android测试器
- android的单元测试摘要
- 拦截短信,不让系统发通知