借助Android的“通知Notification”来实现msn的登录状态
发布时间:2021-11-25 19:25:31 所属栏目:教程 来源:互联网
导读:Notification,状态栏。看得出来就是和我们PC机一样,在某一区域有个标志,需要请求它就去点这个标志就可以打开这个程序了。 先来介绍下需要用到的一些属于Android下的类:Intent、NotificationManager、PendingIntent、Spinner。 1.Intent 我们在开发web项
Notification,状态栏。看得出来就是和我们PC机一样,在某一区域有个标志,需要请求它就去点这个标志就可以打开这个程序了。 先来介绍下需要用到的一些属于Android下的类:Intent、NotificationManager、PendingIntent、Spinner。 1.Intent 我们在开发web项目的时候,总是从这个页面跳转到另一个页面,而且需要从这个页面带必要的值到那个页面。其实Intent就是实现这样的功能。 在Intent中,分为隐式和显示。简单的说一下吧,隐式就是Intent的动作(action)、类(category)等不是直接的,而是在manifestAndroid.xml中的Intent-filter下注明Intent的动作(action)、类(category),在java代码中对Intent进行设置动作和类;www.linuxidc.com而显示就是直接在Intent中设置跳转的方向。(说的很大概)。 2.NotificationManager 通知的设置等操作相对比较简单,基本的使用方式就是用新建一个Notification对象,然后设置好通知的各项参数,然后使用系统后台运行的NotificationManager服务将通知发出来。 实现的步骤如下: 1)得到NotificationManager: 2)创建一个新的Notification对象: 3)填充Notification的各个属性: 3.PendingIntent PendingIntent为Intent的包装,这里是启动Intent的描述,PendingIntent.getActivity 返回的PendingIntent表示,此PendingIntent实例中的Intent是用于启动 Activity 的Intent。PendingIntent.getActivity的参数依次为:Context,发送者的请求码(可以填0),用于系统发送的Intent,标志位。 其中 PendingIntent.FLAG_UPDATE_CURRENT 表示如果该描述的PendingIntent已存在,则改变已存在的PendingIntent的Extra数据为新的PendingIntent的Extra数据。 这里再简要说一下 Intent与 PendingIntent的区别: Intent:意图,即告诉系统我要干什么,然后系统根据这个Intent做对应的事。如startActivity相当于发送消息,而Intent是消息的内容。 PendingIntent:包装Intent,Intent 是我们直接使用 startActivity , startService 或 sendBroadcast 启动某项工作的意图。而某些时候,我们并不能直接调用startActivity , startServide 或 sendBroadcast ,而是当程序或系统达到某一条件才发送Intent。如这里的Notification,当用户点击Notification之后,www.linuxidc.com由系统发出一条Activity 的 Intent 。因此如果我们不用某种方法来告诉系统的话,系统是不知道是使用 startActivity ,startService 还是 sendBroadcast 来启动Intent的(当然还有其他的“描述”),因此这里便需要PendingIntent。 接下来就来展示利用android的"通知Notification"来实现msn的登录状态 粘贴下代码吧。 main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/textview01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="当前状态" /> <Spinner android:id="@+id/spinner" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_toRightOf="@id/textview01" /> </LinearLayout> second.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/textview01" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> MainActivity类 public class MainActivity extends Activity { private Spinner mSpinner; private String[] data = {"离线","在线","忙碌","离开"}; private ArrayAdapter<String> mAdapter; //声明通知(消息)管理器 private NotificationManager mNotificationManager; //声明Notification对象 private Notification mNotification; private PendingIntent mPendingIntent; private Intent mIntent; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //初始化NotificationManager对象 mNotificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); mSpinner = (Spinner)findViewById(R.id.spinner); mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data); mAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); mSpinner.setAdapter(mAdapter); //点击通知时转移内容 mIntent = new Intent(MainActivity.this, MainActivity.class); //主要是设置点击通知时显示内容的类 mPendingIntent = PendingIntent.getActivity(this, 0, mIntent, 0); //构造Notification对象 mNotification = new Notification(); mSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { //设置通知在状态栏显示的图标 switch (arg2) { case 0: mNotification.icon = R.drawable.offine; break; case 1: mNotification.icon = R.drawable.msn; break; case 2: mNotification.icon = R.drawable.busy; break; case 3: mNotification.icon = R.drawable.away; break; } //当我们点击通知时显示的内容 // mNotification.tickerText = "MSN登入状态" + data[arg2]; //通知时发出默认的声音 mNotification.defaults = Notification.DEFAULT_SOUND; //设置通知显示的参数 mNotification.setLatestEventInfo(MainActivity.this, "MSN登入状态", data[arg2], mPendingIntent); //可以理解为执行这个通知 mNotificationManager.notify(0, mNotification); } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); } } (编辑:东莞站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |