当前位置:  编程技术>移动开发
本页文章导读:
    ▪Mars视频札记——广播机制        Mars视频笔记——广播机制 广播机制1 发送方不关心接受方是否接收到数据 不关心如何处理数据 发送方只负责发送数据 Android广播机制介绍 发送事件   BroadcastReceiver作用   BroadcastReceiver的编.........
    ▪ Mars视频札记——ContentProvider        Mars视频笔记——ContentProvider   本来想好好整理格式什么的 后来有点问题只好算了 直接复制了 也没整理格式。。主要方便自己随便哪里都可以看到 到时候再回想    ContentProvider初步   1 Conte.........
    ▪ Mars视频札记——广播机制2       Mars视频笔记——广播机制2 1 注册BroadcastReceiver的方法 BroadcastReceiver用于监听被广播的事件(Intent) 2种注册方法 (1)在应用程序代码中注册 注册BroadcastReciver: registerReceiver(receiver,filter); 取.........

[1]Mars视频札记——广播机制
    来源: 互联网  发布时间: 2014-02-18
Mars视频笔记——广播机制

广播机制1

发送方不关心接受方是否接收到数据 不关心如何处理数据 发送方只负责发送数据

Android广播机制介绍

发送事件

 

BroadcastReceiver作用

 

BroadcastReceiver的编写方法

编写一个类 继承BroadcastReceiver

实现其中的onReceive方法

 

在manifest文件中注册

当action的intent为指定actioin时 触发receiver

<receiver android:name=".类名">

<intent-filter>

<action android:name="android.intent.action.EDIT" />

</intent-filter>

</receiver>

 

使用广播

Intent intent = new Intent();

intent.setAction(Intent.ACTION_EDIT);

TestActivity.this.sendBroadcast(intent);//发送广播

 

一个intent由action和data2部分构成(方法/动作+数据)

 

BroadcastReceiver的生命周期

每次发送广播 都生成一个新的Receiver

一旦onReceive方法返回 Receiver对象就被认为过期


    
[2] Mars视频札记——ContentProvider
    来源: 互联网  发布时间: 2014-02-18
Mars视频笔记——ContentProvider

 

本来想好好整理格式什么的 后来有点问题只好算了 直接复制了 也没整理格式。。主要方便自己随便哪里都可以看到 到时候再回想 

 

ContentProvider初步

 

1 ContentProvider基本概念

为存储和获取数据提供了统一的接口

可以在不同应用程序之间共享数据

Android为常见的一些数据提供了ContentProvider(音频 图片 通信录等等)

 

ContentProvider使用表的形式来组织数据

 

ContentProvider所提供的函数

query inset update delete getType onCreate

 

 

 

2 Uri 统一资源标识符

 每个ContentProvider都拥有一个公共的URI,用于表示这个ContentProvider所提供的数据

 Android所提供的ContentProvider都存放在android.provider包中

 

 

 

3 ContentProvider的实现方法

(自己实现一个并不常见 使用内置较多)

 1 定义一个CONTENT_URI常量

public static final Uri CONTENT_URI=Uri.parse("content://com.example.abc(AUTHORITY变量)/a/b");一般用类名等

定义常量 列名 必须有_ID(INTEGER PRIMARY KEY AUTOINCREMENT 如果使用sqllite3的话 type)

数据类型通过CONTENT_TYPE和CONTENT_TYPE_ITEM确定

CONTENT_TYPE vnd.android.cursor.dir(代表整张表)/vnd.namename

CONTENT_TYPE_ITEM vnd.android.cursor.item(某一条)/vnd.namename

 

表的结构可以通过implementBaseColumns来达到目的

 

 2 定义一个类,继承ContentProvider

UriMatcher 用于匹配URI

uriMatcher.addURI("AUTHORITY变量","路径/#(id)",匹配常量)

 

userProjectionMap 一个<String,String>的HashMap

userProjectionMap.put(列名,列名的别名)

 

 3 实现query insert update delete onCreate getType等方法

getType方法 根据传入的URI 返回该URI所表示的数据类型

eg:

switch(uriMatcher.match(uri)){

case 匹配常量1:

return 数据类型(CONTENT_TYPE)

case 匹配常量2:

return 数据类型2(CONTENT_TYPE_ITEM)

}

实现insert(Uri uri,ContentValue values)方法

eg:

通过sqllite操作

返回值为代表刚刚插入数据的Uri

 

实现onCreate方法

eg:

dh=new DatabaseHelper(getContext(),数据库名);

return true;

实现query方法

eg:

用到SQLiteQueryBuiler对象

qb.setTables(表名)

qb.setProjectionMap (之前创建的HashMap别名彪)

对单条 qb.appendWhere()

 

 4 在AndroidManifest.xml中声明

<provider android:name="包名+类名"

android:authorities="包名+类名" /> 这里的authorities一定要与定义的常量一致

 

使用自定义ContentProvider

new ContentValues()存放要存入的值

uri=getContentResolver().inset(要插入的uri,contentValues)

 


    
[3] Mars视频札记——广播机制2
    来源: 互联网  发布时间: 2014-02-18
Mars视频笔记——广播机制2

1 注册BroadcastReceiver的方法

BroadcastReceiver用于监听被广播的事件(Intent)

2种注册方法

(1)在应用程序代码中注册

注册BroadcastReciver:

registerReceiver(receiver,filter);

取消注册:

unregisterReceiver(receiver);

如果一个BroadcastReceiver用于更新UI,那么通常用代码方式

在Activity启动时注册BroadcastReceiver,在Activity不可见后取消注册

eg:

//生成一个BroadcastReceiver对象

smsReceiver = new SMSReceiver();//比如

//生成一个IntentFilter对象

IntentFilter filter = new IntentFilter();

//为filter添加一个Action

filter.addAction(android.provider.Telphony.SMS_RECEIVED);

//注册 (同理 解除绑定Activity.this.unregisterReceiver(smsReceiver);)

Activity.this.registerReceiver(smsReceiver,filter);

 

在Receiver类的onReceive方法中

通过Bundle bundle=intent.getExtras()得到intent中的数据

Object[] myOBJpdus=(Object[])bundle.get("pdus");

Bundle对象的一个属性pudus

SmsMessage[] message=new SmsMessage(myOBJpdus.length);

创建SmsMessage数组

通过for循环得到短消息内容

for(int i=0;i<myOBJpdus.length;i++){

message[i]=SmsMessage.createFromPdu((byte[])myOBJpuds[i]);

System.out.println(message[i].getDisplayMessageBody());

调用SmsMessage的getDisplayMessageBody()方法得到最终内容

}

 

(2)在AndroidManifest.xml中注册

注意 该方法注册时 即使应用程序已经关闭 仍保持活动状态 继续监听广播

<receiver android:name="类">

<intent-filter>

<action ....../>

</intent-filter>

</receiver>

 

2 Android内置的BroadcastActions

ACTION_CAMERA_BUTTON

ACTION_BATTERY_LOW

ACTION_DATE_CHANGED

ACTION_POWER_CONNECTED

ACTION_REBOOT

ACTION_SCREEN_ON

SDK中的Intent部分中的BroadcastAction

 

******

在DDMS中的EmulatorControl中可以模拟发送短信等其他事项


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3