【Android基础】三、四大组件(一)

原创 2016年06月01日 13:11:24

一、Activity
二、BroadcastReciver
1)getResultData():获取广播发送的数据,此data是在清单文件中声明广播接收者的时候设置的data标签,在发送广播时对Intent对象setData();
2)以下两个方法只有在有序广播中才有效
setResultData();//修改广播数据
absorbBroadcast();//拦截广播
3)intent.getAction();//获得广播意图的动作
intent.getExtras();//返回传递数据的Bundle对象
intent.getData();
1.电话拨号器
权限:
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>

动作:
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>

通过getResultData()方法获取所拨的电话号码,setResultData(number)方法修改电话号码
2.短信接收器
权限:
<uses-permission android:name="android.permission.RECEIVE_SMS"/>

动作:
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>

短信内容封装在intent中的Bundle对象里,以pdus为键取出Bundle对象中存储的Object数组,每一个数组元素是一条短信,强转成字节数组后组建成SmsMessage对象,电话号码是通过SmsMessage的getOriginatingAddress()方法获取的
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("接收到了广播");
//短信内容封装在intent
Bundle bundle = intent.getExtras();
//以pdus为键取出object数组,每一个数组的元素是一条短信
Object[] objects = (Object[])bundle.get("pdus");
for(Object object:objects){
SmsMessage sms = SmsMessage.createFromPdu((byte[])object);
if(sms.getOriginatingAddress().equals("10086")){
abortBroadcast();
SmsManager.getDefault().sendTextMessage(sms.getOriginatingAddress(), null, sms.getMessageBody(),null,null);
}
}
}

3.监听SD卡状态改变
sd卡不同状态发送不同意图的广播,这里广播接收者接收多种广播,通过intent.getAction()获取意图区别不同的广播
动作:

<action android:name="android.intent.action.MEDIA_MOUNTED"/>  
                <action android:name="android.intent.action.MEDIA_UNMOUNTED"/>  
                <action android:name="android.intent.action.MEDIA_REMOVED"/>  
                <data android:scheme="file"/>  
@Override  
    public void onReceive(Context context, Intent intent) {  
        String action = intent.getAction();  
        if(action.equals("android.intent.action.MEDIA_MOUNTED")){  
            Toast.makeText(context,"SD卡准备就绪",Toast.LENGTH_SHORT).show();  
            System.out.println("SD卡准备就绪");  
        }else if(action.equals("android.intent.action.MEDIA_UNMOUNTED")){  
            Toast.makeText(context,"SD卡被移除",Toast.LENGTH_SHORT).show();  
            System.out.println("SD卡被移除");  
        }else if(action.equals("android.intent.action.MEDIA_REMOVED")) {  
            Toast.makeText(context,"SD卡被拨出",Toast.LENGTH_SHORT).show();  
            System.out.println("SD卡被拔出");  
        }  
    }  

4.开机启动
在广播接收者中启动Actiivty时,要通过intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)开启一个新的栈
权限:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

动作:
<action android:name="android.intent.action.BOOT_COMPLETED"/>

5.监听应用状态改变
应用包的名称是通过intent.getData()取得的
动作:
<action android:name="android.intent.action.PACKAGE_ADDED"/>
<action android:name="android.intent.action.PACKAGE_REPLACED"/>
<action android:name="android.intent.action.PACKAGE_REMOVED"/>
<data android:scheme="package"/>

发送广播:sendBroadcast(intent);
发送有序广播:sendOrderBroadcast(intent,)//可以指定最终接收者

在代码中配置广播接收者

//创建广播接收者对象  
Receiver receiver = new Receiver();  
//创建IntentFilter对象  
IntentFilter filter = new IntentFilter();  
//添加Action  
filter.addAction(Intent.ACTION_SCREEN_OFF);  
filter.addAction(Intent.ACTION_SCREEN_ON);  
//注册广播接收者  
registerReceiver(receiver,filter);
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android基础知识之四大组件Activity(三)多个Activity交互的生命周期与设计思想

通过一个Demo来验证: 首先创建一个Project,更改主布局文件:
  • lxawcf
  • lxawcf
  • 2015年08月02日 20:38
  • 260

Android基础知识之四大组件Activity(五)Activity生命周期场景的应用

今天,来写一个关于Android四大组件Activity生命周期的一个简单应用,做一个关于极简单的音乐播放器(只是为了巩固一下Activity的生命周期,并不能当作项目来用)。 先来截个界面的图: ...
  • lxawcf
  • lxawcf
  • 2015年08月03日 21:52
  • 293

Android基础——四大组件Service

Service1.Xmind2.创建服务 流程使用startService启动Serviceprotected void onCreate(Bundle savedInstanceState){ ...

【Android基础入门〖5〗】四大组件之BroadcastReceiver

0  简介        BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的 广播。        在Android系统中,广播体现在方方面面...
  • mkr127
  • mkr127
  • 2013年09月24日 22:47
  • 1425

android入门基础总结(1) ----四大组件

学习android总结(1)                                                         -------四大组件         初接触andr...

Android四大组件之服务(一)-----服务基础功能简述

服务(Service)是android的四大组件之一,在Android项目中担任着后台运行的大任,主要去完成那些不需要和用户交互而且还要求长时间运行在后台的工作。服务的运行不会对用户使用app造成任何...

Android基础四大组件详解

Android四大组件Activity,Service,BroadCastReceiver,ContentProvider详解

Android基础知识总结---四大组件之一BroadCastReceiver(一)

BroadcastReceiver:意为广播接收器一:BroadcastReceiver的简述BroadcastReceiver也是Android系统的四大组件之一,这种组件本质上就是一种全局的监听器...

野人学Android基础篇之四大组件第一课--Activity的生命周期

1.Activity的生命周期包括哪些,含义是什么 2.OnCreate 的参数savedInstanceState是什么,怎么用 3.Bundle是一个什么样类型的对象?...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Android基础】三、四大组件(一)
举报原因:
原因补充:

(最多只允许输入30个字)