【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基础四大组件详解

Android四大组件Activity,Service,BroadCastReceiver,ContentProvider详解
  • qq_35578940
  • qq_35578940
  • 2016年09月05日 23:46
  • 5652

Android源码解析四大组件系列(四)---Activity启动详细流程

在上一篇博客http://www.jianshu.com/p/98fa08ee1bfb,我们起码知道了Zygote是怎么启动SystemServer进程的,AMS是怎么注册的,启动的,启动之后通过So...
  • u013263323
  • u013263323
  • 2017年03月08日 14:53
  • 419

Android四大组件及其联系纽带Intent

一、Activity —— 应用表示层( 基类 Activity )         一个活动表示一个可视化的用户界面,关注一个用户从事的事件。例如,一个活动可能表示一个用户可选择的菜单项列表,...
  • java_xxoo_android
  • java_xxoo_android
  • 2014年12月22日 20:35
  • 1488

Android四大组件深度解析

系统对四大组件的过程进行了很大程度的封装,日常开发中并不需要了解底层的工作原理,那么研究这些原理的意义在哪里呢?如果你想在技术上更进一步,那么了解一些系统的工作原理是十分必要的,也是开发人员日后成长为...
  • u012768347
  • u012768347
  • 2016年03月15日 12:23
  • 1487

android四大组件(详细总结)

android四大组件分别为activity、service、content provider、broadcast receiver。 一、android四大组件详解 1、activity ...
  • ican87
  • ican87
  • 2014年03月23日 16:03
  • 129246

深入剖析Android四大组件(一)——Activity生命周期详解

虽然如此,但即使你没有实现onSaveInstanceState()方法,也还是有一些Activity的状态通过Activity类默认实现的onSaveInstanceState()方法恢复。特别是,...
  • liyuanjinglyj
  • liyuanjinglyj
  • 2015年07月25日 19:37
  • 2994

基于场景解读Android四大组件

谈到Android四大组件:Activity,Service,Broadcast和ContentProvider,大部分人应该都比较熟悉了,因为会使用这四大组件是作为一个App开发者的基本功。但是,大...
  • okgays
  • okgays
  • 2017年04月02日 14:21
  • 315

Android开发四大组件之Service(实例篇)

关于Service的开发详解已经在上一篇:Android开发四大组件之Service(详解篇)讲的很清楚了,本篇主要对Service的开发实例做下讲解。...
  • fengyuzhengfan
  • fengyuzhengfan
  • 2014年07月21日 17:10
  • 1782

Android 四大组件的工作过程

1. 用户参与 用户最常见的两种操作, 按Home键或Back键. (1) 点击Home键, 暂停当前Activity, 调用onPause –> onSaveInstanceState –> o...
  • github_34918327
  • github_34918327
  • 2016年06月19日 12:10
  • 330

Android 四大组件和五大布局

Android 四大组件和五大布局   Android四大组件:Activity、Service、Broadcast Receiver、Content Provider。  Activ...
  • u012482178
  • u012482178
  • 2013年12月02日 15:26
  • 5018
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Android基础】三、四大组件(一)
举报原因:
原因补充:

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