网站建设衤金手指谷哥十四,美橙建站五站合一软件,asp和php网站的区别,有口碑的常州网站优化一、ContentProvider内容提供者.是是android中一个应用向第三方共享数据的方式,android中的联系人,sms(短信记录)等都是通过这一方式来向外提供的 1、使用#xff1a; 在应用中使用ContentProvider提供的数据并不是直接使用的,而是需要通过ContentResolver来实现的,ContentRes…一、ContentProvider内容提供者.是是android中一个应用向第三方共享数据的方式,android中的联系人,sms(短信记录)等都是通过这一方式来向外提供的 1、使用 在应用中使用ContentProvider提供的数据并不是直接使用的,而是需要通过ContentResolver来实现的,ContentResolver中包含query/insert/delete/update等方法用于操作数据,但其内部就是调用ContentProvider的实现类来真正操作的。 使用ContentProvider获取sms数据的例子 上面的使用过程分三步: ①指定访问URI, ②通过getContentResolver()获取ContentResolver对象,然后进行增删改查操作 ③对获取数据/结果进行处理。 上面是简述,下面对其中使用的内容进行详细说明: ①、URI:最早使用到的地方就是在Intent进行匹配的时候,其实这时的URI是和data向匹配的: content:// com.example.project :200 /folder/subfolder/etc\---------/ \---------------------------/ \---/ \--------------------------/scheme host port path \--------------------------------/ authority 现在大家应该知道data flag中那些属性的含义了吧看下data flag data android:hoststring android:mimeTypestring android:pathstring android:pathPatternstring android:pathPrefixstring android:portstring android:schemestring / 在使用ContentProvider时对URI有一个要求:就是其scheme必须是content,原因见2. 注意:关于匹配ContentProvider的URI规则见自定义ContentProvider部分。 ②、以query()为例,ContentResolver对象最终会调用的方法的源码见下 ContentResolver源码 其中可以看到第一步是检测传入的uri是否为空,第二部就是对传入uri的scheme进行检测,判断其是否为content cquireUnstableProvider源码(检测uri的scheme) 同时可以看到是调用了ContentProvider对象进行真正的查询操作。这样做是为了简化对ContentProvider的操作,和进行安全检测等。 ③、增删查改中最重要的就是查询的结果即Cursor的处理。Cursor就是一个数据的集合,可以获取某一行然后读取其中的数据。该类是一个接口类。 2、自定义ContentProvider:这是自己项目对外提供数据的一种方式最好的方式就是以android提供的范本进行创建这里参考的是android的sample:notepad。这个项目中有3个文件比较重要,详细说明: 1、NodePad.java:这个类中定义了一些与访问有关的属性,例如URI,列的名字等。这个类要和ContentProvider配合使用。 NotePad.java 2、NotePadProvider.java这个类就是自定义的ContentProvider,需要继承ContentProvider类并至少实现增删改查方法还有构造方法。在这个例子中,可以看到使用了以下几个类: ①DatabaseHelper一个数据库帮助类,继承自SQLiteOpenHelper。 DatabaseHelper源码 ②UriMatcher:这个对象的作用是用来指定匹配该ContentProvider的URI的匹配规则。 UriMatcher部分源码 ③SQLiteQueryBuilder:该类是用来构建查询语句的。 3、AndroidManifest.xml:这里需要注意的是清单文件中provider声明的部分 清单文件 其中比较重要的是android:authorities和权限的声明,其实ContentProvider有非常复杂的权限管理,详见:http://iwillbemyself.blog.163.com/blog/static/1702232282012115104056917/, 对于自定义ContentProvider还有一点比较重要的就是当操作的数据库有所改变时,应该通知相应的ContentObserver(内容观察者)进行处理。 二、BroadcastReceiver广播接收者,广播是Android中传递事件的方式,有两个方面:广播发送者和广播接收者。 1、广播发送者可以发送两种广播:同步广播和有序广播两者的区别是 ①接收顺序的区别:同步广播同步接收,有序广播可以通过指定优先级来设置接收顺序 ②是否可以中断的区别:由于有序广播有顺序,才有可能将广播进行中断,不让后来者进行接收;而同步广播则不能中断。 2、广播接收者:广播发送的具体内容就是一个隐式意图对象(因为通常是给另外的应用使用的),接收者通过两步来实现 ①在清单文件中进行配置, ②继承BroadcastReceiver对象,并重写onReceive方法,在其中实现功能即可。 有序广播通过指定优先级来确定接收顺序,优先级从-1000~1000 ①如果同一个应用中的优先级相同,则在清单文件中前面的先接收 ②如果不同应用中的优先级相同,则先安装的应用先接收 参考:http://blog.csdn.net/xiazdong/article/details/7768807 http://www.runoob.com/w3cnote/android-tutorial-broadcastreceiver.html转载于:https://www.cnblogs.com/songfeilong2325/p/5446546.html