android--(BroadcastReceiver)
来源:互联网 发布:日本人的交友软件 编辑:程序博客网 时间:2024/06/05 17:16
//普通默认的广播:1.广播接收器:public class MyReceiver1 extends BroadcastReceiver { public MyReceiver1() { } //接收广播信息 @Override public void onReceive(Context context, Intent intent) { String i = intent.getStringExtra("info"); Toast.makeText(context, i, Toast.LENGTH_SHORT).show(); }}2.activity类:public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void sendNormal(View v) { Intent intent = new Intent("com.ke.action.MY_BROADCAST");//action字符相当于广播的频率一样 intent.putExtra("info", "this is boradcast");//要发送广播的内容 this.sendBroadcast(intent);//发送广播 }}
public class MyReceiver2 extends BroadcastReceiver { public MyReceiver2() { } @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "动态注册的广播接收器", Toast.LENGTH_SHORT).show(); }}///在清单文件中要将MyReceiver2 的注册删除,这里才用代码注册的方式public class MainActivity extends Activity { private MyReceiver2 myReceiver2 = new MyReceiver2(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //启动activity的时侯就进行注册了 //在该方法进行广播注册 @Override protected void onResume() { super.onResume(); IntentFilter filter = new IntentFilter(); filter.addAction("com.ke.action.MY_BROADCAST"); registerReceiver(myReceiver2, filter); } //在该方法中进行解除广播注册 @Override protected void onPause() { super.onPause(); unregisterReceiver(myReceiver2); }}
1.activity类public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void sendOrderClick(View v) { Intent intent = new Intent("com.andorid.keke"); //参数:intent ,接收权限:接收广播接收器需的权限 this.sendOrderedBroadcast(intent, null); }}2.广播接收器public class MyReceiver extends BroadcastReceiver { public MyReceiver() { } @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "有序广播接收器-1",Toast.LENGTH_SHORT).show(); //中断有序广播 //this.abortBroadcast(); Bundle data = new Bundle(); data.putString("info","广播1"); this.setResultExtras(data);//将数据发送到下一个广播接收器中 }}public class MyReceiver2 extends BroadcastReceiver { public MyReceiver2() { } @Override public void onReceive(Context context, Intent intent) { Bundle data = getResultExtras(false);// false:没有的话就不创建 Toast.makeText(context, data.getString("info").toString(), Toast.LENGTH_SHORT).show(); }}3.配置清单文件: <receiver android:name=".MyReceiver" android:enabled="true" android:exported="true" > <intent-filter android:priority="1000"> <action android:name="com.andorid.keke"></action> </intent-filter> </receiver> <receiver android:name=".MyReceiver2" android:enabled="true" android:exported="true" > <intent-filter android:priority="200"> <action android:name="com.andorid.keke"></action> </intent-filter> </receiver>
public void mmsClick(View v){ SmsManager sm = SmsManager.getDefault(); String message = "一条短线"; ArrayList<String> list = sm.divideMessage(message); for (int i=0;i<list.size();i++){ sm.sendTextMessage("5556",null,list.get(i),null,null); } }
public class MyReceiverR extends BroadcastReceiver { public MyReceiverR() { } @Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); if(bundle !=null){ Object[] objects = (Object[]) bundle.get("pdus"); SmsMessage[] smsMessages = new SmsMessage[objects.length]; for (int i=0;i<objects.length;i++){ smsMessages[i] = SmsMessage.createFromPdu((byte[]) objects[i]); //发送方的号码 String number = smsMessages[i].getDisplayOriginatingAddress(); //获取短线的内容 String cont = smsMessages[i].getDisplayMessageBody(); Toast.makeText(context,number +":"+cont,Toast.LENGTH_SHORT).show(); } } }}//清单配置 <receiver android:name=".MyReceiverR" android:enabled="true" android:exported="true" > <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED"></action> </intent-filter> </receiver>
activity: public void startAlarmClick(View v){ //获取到了系统的闹钟服务 AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); //触发闹钟的时间 long triggerTime = System.currentTimeMillis()+3000; Intent intent = new Intent(this,MyReceiverR.class);// 可以get 广播,服务,activity 类型 PendingIntent op = PendingIntent.getBroadcast(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT); //只会执行一次的闹钟 // am.set(AlarmManager.RTC,triggerTime,op); //op : 启动这个闹钟的操作,也就是干什么事. //指定时间重复执行 am.setRepeating(AlarmManager.RTC,triggerTime,2000,op); //2000 : 间隔时间,多长时间重复一次 //am.cancel(op);//取消操作 }2.广播接收器:public class MyReceiverR extends BroadcastReceiver { public MyReceiverR() { } @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context,"闹钟",Toast.LENGTH_SHORT).show(); }}
1.activity: public void startSet(View v){ AlarmManager ams = (AlarmManager) getSystemService(Context.ALARM_SERVICE); long triggerTime = System.currentTimeMillis() + 3000; Intent intent = new Intent(this,MainActivity2Activity2.class); startActivity(intent); }2.另一个activity,打开音乐播放器,并自动调用对话框:public class MainActivity2Activity2 extends Activity { MediaPlayer mp; //媒体播放对象 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //唤醒屏幕 Window win = getWindow(); win.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); setContentView(R.layout.activity_main_activity2_activity2); mp = new MediaPlayer(); try { mp.setDataSource(this, Uri.parse("/sdcard/music/nl.mp3")); mp.prepare(); //状态,预备状态 } catch (IOException e) { e.printStackTrace(); } mp.setLooping(true); //循环 mp.start(); //启动 alarmDialog(); //弹出对话框 } @Override protected void onResume() { super.onResume(); } @Override protected void onDestroy() { super.onDestroy(); if(mp !=null){ if(mp.isPlaying()){ mp.stop(); } mp.release(); //释放资源 } } public void alarmDialog(){ AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("起床了"); //弹出框提示内容 //弹出框按钮 builder.setPositiveButton("再来一次", new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which) { alarm();//由闹钟服务来自动 启动对话窗口 finish();//关闭窗口 } }); builder.setNegativeButton("关闭了", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }); builder.show(); } private void alarm(){ //获取到了系统的闹钟服务 AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); //触发闹钟的时间 long triggerTime = System.currentTimeMillis()+5000; Intent intent = new Intent(this,MainActivity2Activity2.class); PendingIntent op = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); //只会执行一次的闹钟 am.set(AlarmManager.RTC,triggerTime,op); //op : 启动这个闹钟的操作,也就是干什么事. }}
0 0
- Android:BroadcastReceiver
- android BroadcastReceiver
- Android BroadcastReceiver
- BroadcastReceiver Android
- Android BroadcastReceiver
- android BroadcastReceiver
- Android BroadCastReceiver
- Android BroadcastReceiver
- Android BroadcastReceiver
- android BroadcastReceiver
- android BroadcastReceiver
- Android BroadcastReceiver
- Android BroadcastReceiver
- android BroadcastReceiver
- Android BroadcastReceiver
- Android BroadcastReceiver
- Android BroadcastReceiver
- android BroadcastReceiver
- PowerShell 异常处理(trap / try…catch / Throw / $Error / $ConfirmPreference)
- 文件上传
- C++ 用libcurl库进行http通讯网络编程
- Android中NavigationDrawer的分析
- 学习爬虫的记录
- android--(BroadcastReceiver)
- 十二、机器学习系统设计笔记之大数据
- 欢迎使用CSDN-markdown编辑器
- 批处理文件 bat 的入门命令
- LintCode:二叉树的最小深度
- POJ-2028
- Brackets(区间DP)
- Repo和Git 版本管理常用命令
- [sicily]1150. 简单魔板