Broadcast使用以及在通知栏显示消息
2014-12-26 15:31
183 查看
本实例只有1个界面(Activity),界面上包涵一个EditText及一个按钮。当按钮被按下时,获取EditText中的内容并广播。本实例还创建了一个BroadcastReceiver,用于接收按钮按下时的广播,并将广播消息内容显示于通知栏。当点击通知栏的广播消息时另一个Activity将会被打开。完成后显示效果如下:
编程实现
1、新建一个android项目(过程省略),添加需要的文件。添加后,此项目工程目录如下:
2、编辑activity_main.xml,添加一个EditText和一个按钮,完成后内容大致如下:
3、编辑MainActivity.java文件,MainActivity.java中定义了类MainActivity。MainActivity继承自Activity,以activity_main.xml定义的界面为显示界面。当activity_main.xml上的按钮按下时,获取EditText的内容并发送广播。MainActivity.java内容如下:
4、编辑HelloBroadcastReceiver.java文件,此文件中定义了广播接收器BroadcastReceiver,用于接收MainActivity中发送的广播。接收到广播后,将广播的内容显示与通知栏。HelloBroadcastReceiver.java文件内容如下:
5、最后需要注册广播接收器,本实例采用静态方式注册。在AndroidManifest.xml的<application>内添加以下内容:
6、Toast.makeText(mContext, etBroadcastContent.getHint(), Toast.LENGTH_SHORT).show() 显示效果如下:
编程实现
1、新建一个android项目(过程省略),添加需要的文件。添加后,此项目工程目录如下:
2、编辑activity_main.xml,添加一个EditText和一个按钮,完成后内容大致如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.broadcastreceiver.broadcastreceiverproject.MainActivity$PlaceholderFragment" > <EditText android:id="@+id/editText1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:ems="10" android:hint="@string/textEdit1_text" android:inputType="text" > </EditText> <Button android:id="@+id/button1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editText1" android:layout_below="@+id/editText1" android:layout_marginTop="14dp" android:text="@string/button1_text" /> </RelativeLayout>
3、编辑MainActivity.java文件,MainActivity.java中定义了类MainActivity。MainActivity继承自Activity,以activity_main.xml定义的界面为显示界面。当activity_main.xml上的按钮按下时,获取EditText的内容并发送广播。MainActivity.java内容如下:
package com.broadcastreceiver.broadcastreceiverproject; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import android.content.Context; import android.content.Intent; public class MainActivity extends Activity { private Context mContext; private Button btnSendBroadcast; private EditText etBroadcastContent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mContext = this; btnSendBroadcast = (Button)findViewById(R.id.button1); btnSendBroadcast.setOnClickListener(new btnSendBroadcast_Listener()); etBroadcastContent = (EditText)findViewById(R.id.editText1); } private class btnSendBroadcast_Listener implements View.OnClickListener { @Override public void onClick(View v) { String content = etBroadcastContent.getText().toString().trim(); if (content.length() < 1) { // 显示某些内容,此处用于提醒,效果见最后 Toast.makeText(mContext, etBroadcastContent.getHint(), Toast.LENGTH_SHORT).show(); return; } Intent intent = new Intent(); intent.setAction("com.eoeandroid.action.BroadcastReceiverTest"); intent.putExtra("msg_content", content); sendBroadcast(intent); } } }
4、编辑HelloBroadcastReceiver.java文件,此文件中定义了广播接收器BroadcastReceiver,用于接收MainActivity中发送的广播。接收到广播后,将广播的内容显示与通知栏。HelloBroadcastReceiver.java文件内容如下:
package com.broadcastreceiver.broadcastreceiverproject; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.app.NotificationManager; import android.app.Notification; import android.app.PendingIntent; public class HelloBroadcastReceiver extends BroadcastReceiver { private Context context; @Override public void onReceive(Context context, Intent intent) { this.context = context; showNotification(intent); } //通知栏显示消息 private void showNotification(Intent intent) { NotificationManager notificationManager = (NotificationManager)context .getSystemService(Context.NOTIFICATION_SERVICE); //一组将被执行的Intent集合 Intent aIntent[] = new Intent[1]; aIntent[0] = new Intent(context, MainActivity.class); PendingIntent pendingIntent = PendingIntent.getActivities(context, 0, aIntent, 0); String title = intent.getExtras().getString("msg_content"); Notification noti = new Notification.Builder(context) .setContentTitle(title.subSequence(0, title.length())) .setContentText(title.subSequence(0, title.length())) .setSmallIcon(R.drawable.ic_launcher) .setWhen(System.currentTimeMillis()) .setContentIntent(pendingIntent) //调用后当通知栏消息被点击时,Intent集合被执行 .build(); notificationManager.notify(R.layout.activity_main, noti); } }
5、最后需要注册广播接收器,本实例采用静态方式注册。在AndroidManifest.xml的<application>内添加以下内容:
<receiver android:name=".HelloBroadcastReceiver" android:exported="false"> <intent-filter> <action android:name="com.eoeandroid.action.BroadcastReceiverTest"/> </intent-filter> </receiver>
6、Toast.makeText(mContext, etBroadcastContent.getHint(), Toast.LENGTH_SHORT).show() 显示效果如下:
相关文章推荐
- Broadcast的使用以及在通知栏显示消息
- Android--使用Notification在通知栏显示消息
- 【Android开发】消息提示框与对话框-使用Notification在状态栏上显示通知
- 在ios5 中 使用通知机制(notification ) 来显示一个消息(banner 和 alert)
- C#读取WORD时发生“拒绝访问”及“消息筛选器显示应用程序正在使用中”异常的处理
- Asp.net中建立MS office组件时出现“拒绝访问”和“消息筛选器显示应用程序正在使用中”错误的解决方法
- Struts 使用要点(概述,Spring与Struts的整合,输入校验与消息显示)
- Struts 使用要点(概述,Spring与Struts的整合,输入校验与消息显示)
- 关于linux下使用优盘和移动硬盘以及正确显示中文
- CentOS中root使用Vi不能高亮显示的解决办法以及TAB补全命令
- 使用Mina实现RPC调用,消息通知,广播。
- 时更新 在线观察纸黄金价格 24小时黄金走势图使用现货买入价格 黄金价格历史走势图 全天显示黄金,银,钯 和 铂以及原油期货,美元指数的最新价格
- WPF的消息机制(三)- WPF内部的5个窗口之处理激活和关闭的消息窗口以及系统资源通知窗口
- 在jsp页面中使用显示单独的多个错误消息
- WCF消息安全模式之自定义用户名密码:Message CustomUserNamePassword wsHttpBinding 使用Windows Services宿主以及客户端免证书验证
- SharePoint中使用SPFolderCollection以及SPFolder对象分层次显示文档列表
- 使用单独的命令处理类来处理命令消息(适用于有很多命令处理函数的对象,以及共享命令处理函数)
- Struts 使用要点(概述,Spring与Struts的整合,输入校验与消息显示)
- Control Study->AdRotator广告控件显示自定义配置文件中广告以及与DataGrid控件结合使用显示图片(示例代码下载)
- printk()函数的使用 控制台改变显示消息级别