当前位置: 首页 > news >正文

北京整站线上推广优化邯郸网站建设渠道

北京整站线上推广优化,邯郸网站建设渠道,西湖区网站建设,公司网站换服务器怎么做3、ContentProvider  数据在Android当中是私有的#xff0c;当然这些数据包括文件数据和数据库数据以及一些其他类型的数据。ContentProvider实现多应用程序间的数据共享类一般利用ContentProvider为需要共享的数据定义一个URI(统一资源定位符)然后其他程序通过Context获得C… 3、ContentProvider  数据在Android当中是私有的当然这些数据包括文件数据和数据库数据以及一些其他类型的数据。ContentProvider实现多应用程序间的数据共享类一般利用ContentProvider为需要共享的数据定义一个URI(统一资源定位符)然后其他程序通过Context获得ContentResolver并将数据的URI传入即可 Android已为一些常用的数据创建ContentProvider,这些ContentProvider位于android.provider包下常用的就是手机上联系人信息但是要取得相应的权限自己的应用程序才能访问具体设置是在AndroidManifest.xml 1 uses-permission android:nameandroid.permission.READ_CONTACTS / 对于ContentProvide重要的是数据模型和URI数据模型:ContentProvide为所需要的数据创建表每行代表一条记录每条记录有唯一的_ID标识URI:每个ContentProvide对外提供一个URI来标识自己的数据集 URI特点1、无法改变的标准前缀包括content://、tel://等。当前缀是content://时说明通过一个Content Provider控制这些数据2、URI的标识它通过authorities属性声明用于定义了是哪个ContentProvider提供这些数据。对于第三方应用程序为了保证URI标识的唯一性它必须是一个完整的类名(数据路径)。例如;content://com.example.contentprovide.myprovider3、如果URI中包含表示需要获取的记录的_ID则就返回该id对应的数据如果没有_ID就表示返回全部 举个例子如  所有联系人的URI content://contacts/people 某个联系人的URI: content://contacts/people/5   具体使用步骤1、在当前应用程序中定义一个ContentProvider 1 public class MyProvider extends ContentProvider {2 3 Override4 public int delete(Uri arg0, String arg1, String[] arg2) {5 // TODO Auto-generated method stub6 return 0;7 }8 9 Override 10 public String getType(Uri arg0) { 11 // TODO Auto-generated method stub 12 return null; 13 } 14 15 Override 16 public Uri insert(Uri arg0, ContentValues arg1) { 17 // TODO Auto-generated method stub 18 return null; 19 } 20 21 // 创建数据库建表和插入数据 22 Override 23 public boolean onCreate() { 24 // TODO Auto-generated method stub 25 SQLiteDatabase db this.getContext().openOrCreateDatabase(mydb.db, Context.MODE_PRIVATE, null); 26 db.execSQL(create table tab(_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL)); 27 ContentValues values new ContentValues(); 28 values.put(name, Hello ContentProvider!); 29 db.insert(tab, _id, values); 30 db.close(); 31 return true; 32 } 33 34 // 查询 35 Override 36 public Cursor query(Uri arg0, String[] arg1, String arg2, String[] arg3, 37 String arg4) { 38 // TODO Auto-generated method stub 39 SQLiteDatabase db this.getContext().openOrCreateDatabase(mydb.db, Context.MODE_PRIVATE, null); 40 Cursor c db.query(tab, null, null, null, null, null,null); 41 return c; 42 } 43 44 Override 45 public int update(Uri arg0, ContentValues arg1, String arg2, String[] arg3) { 46 // TODO Auto-generated method stub 47 return 0; 48 }  这里为了演示方便只实现创建和查询两个简单的方法   2、在当前应用程序的AndroidManifest.xml中注册此ContentProvider 1 provider android:name.MyProvider android:authoritiescom.example.contentprovider.MyProvider/   3、其他应用程序通过ContentResolver和Uri来获取此ContentProvider的数据 1 protected void onCreate(Bundle savedInstanceState) {2 super.onCreate(savedInstanceState);3 setContentView(R.layout.activity_main);4 5 // 获取当前context6 Context context MainActivity.this;7 8 // 得到ContentResolver对象9 ContentResolver resolver context.getContentResolver(); 10 11 // uri格式 content://、数据的路径、标示ID(可选) 12 Uri uri Uri.parse(content://com.example.contentprovider.MyProvider); 13 Cursor c resolver.query(uri, null, null, null, null); 14 15 // 打印获取数据 16 c.moveToFirst(); 17 for(int i0; ic.getCount(); i){ 18 int index c.getColumnIndexOrThrow(name); 19 String src c.getString(index); 20 Log.d(, src); 21 c.moveToNext(); 22 } 23 } 日志打印       上面MyProvider代码和应用程序MainActivity代码不放在同一个包下是想说明ContentProvider不同程序间的数据共享 但是注册获取权限那段代码要放在调用的程序包里。   其实通过代码可以看出为了共享数据库可以让数据库披上ContentProvider外衣主要还是通过SQLiteDatabase去操作数据库。 当然对于已封装的共享数据。我们只要设置获取权限通过ContentResolver就可以直接调用。   4、获取系统的联系人、媒体库信息   对于系统程序的联系人、多媒体等信息可通过指定的Uri来获取。   数据附录是获取本地联系人信息代码 1 public String getContactInfo(){2 String result;3 ContentResolver resolvergetContentResolver();4 //查询联系人5 Cursor cursorresolver.query(Contacts.CONTENT_URI, null, null, null, null);6 int idIndexcursor.getColumnIndex(Contacts._ID);7 // 取得联系人名字 (显示出来的名字)实际内容在 ContactsContract.Contacts中8 int nameIndexcursor.getColumnIndex(Contacts.DISPLAY_NAME);9 for (cursor.moveToFirst();(!cursor.isAfterLast());cursor.moveToNext()) { 10 //获取联系人ID 11 String contactId cursor.getString(idIndex); 12 resultresultcontactId\t\t\t; 13 resultresultcursor.getString(nameIndex)\t\t\t; 14 // 根据联系人ID查询对应的电话号码 15 Cursor phoneNumbers resolver.query(CommonDataKinds.Phone.CONTENT_URI, null, 16 CommonDataKinds.Phone.CONTACT_ID contactId, null, null); 17 // 取得电话号码(可能存在多个号码) 18 while (phoneNumbers.moveToNext()) 19 { 20 String strPhoneNumber phoneNumbers.getString(phoneNumbers.getColumnIndex(CommonDataKinds.Phone.NUMBER)); 21 resultresultstrPhoneNumber\t\t\t; 22 } 23 phoneNumbers.close(); 24 25 // 根据联系人ID查询对应的email 26 Cursor emails resolver.query(CommonDataKinds.Email.CONTENT_URI, null, 27 CommonDataKinds.Email.CONTACT_ID contactId, null, null); 28 // 取得email(可能存在多个email) 29 while (emails.moveToNext()) 30 { 31 String strEmail emails.getString(emails.getColumnIndex(CommonDataKinds.Email.DATA)); 32 resultresultstrEmail\t\t\t; 33 } 34 emails.close(); 35 resultresult\n; 36 } 37 cursor.close(); 38 return result; 39 }   5、监听ContentProvider的数据改变   随着ContentProvider的共享数据可能发生改变要提供给有使用该共享数据的相应具体步骤如下 1).在ContentProvider类的insert\update\delete方法加入this.getContext().getContentResolver().notifyChange(URI,null); 其中URI表示监听的URI null表示发送消息给任何人 2).在访问者的类中调用如下方法 context.getContentResolver().registerContentObserver(uri,true,new ContentObserver(new Handler())); 3).创建内部类继承ContentObserver并重写下面两个方法 (1)带有Handler的构造函数 (2)public void onChange(boolean selfChange); 此函数在内容提供者发出改变信号时就会被调用 参数selfChange为如果是自己改变的原因则为true如果不是自己改变的则为false     转载于:https://www.cnblogs.com/aiguozhe/p/3587881.html
http://www.pierceye.com/news/55186/

相关文章:

  • 散文网站模板网页设计报告总结200字
  • 网站建设代码走查小程序网站建设制作
  • 沭阳三剑客做网站网站的后期运营及维护费用
  • 广州番禺专业做网站江西省住房城乡建设部网站
  • 个人网站设计论文摘要二级域名的子域名
  • 厦门建设网站哪家好wordpress menu 插件
  • 全国做网站的公wordpress服务器选择
  • 广州金融网站建设交易所源码
  • 手机网站 焦点图长春是几线城市2020排名
  • 搭建一个网站需要哪些技术中网可信网站查询
  • 盐步网站制作商城类网站如何做seo
  • 目录浏览的网站广东新闻联播回放
  • 企业内部网站模板下载竹溪网站建设
  • 购物类网站的设计特点重庆新闻联播历年片头
  • 昆明网络公司网站汽车贸易网站建设方案
  • 电子商务网站建设讨论wordpress 仿站小工具
  • 做产品推广的网站有哪些社交网站备案
  • 广州网站维护公司简约网站首页
  • 中山有做网站的公司吗上海网站制作顾问
  • 适合大学生做的兼职网站潍坊网站建设一品网络小程序
  • php 网站后台管理系统广州微网站建设效果
  • 汕头论坛网站建设衡水seo优化
  • 国外有哪些设计网站有哪些问题班级优化大师手机版下载
  • 还有什么类型的网站网站建设友汇
  • 中国建设银行网站快速查询如何在工商网站做预先核名
  • 做文化墙的网站免费创建论坛
  • 个体工商户可以做网站吗佛山网站设计定制
  • wordpress怎么搜索网站吴中区住房和城乡建设局网站
  • delphi 可做网站吗大连网站排名系统
  • 公司实力 网站网页的网站建设