Android之内容提供者(Content Provider)
来源:互联网 发布:软件方案培训 编辑:程序博客网 时间:2024/04/30 15:54
Content Provider相当于数据的接口,通过Content Provider可以将程序内部使用的数据向其他程序公开,这样其他的程序就可以通过Context.getContentResolver方法获得ContentResolver对象,并使用ContentResolver.insert, ContentResolver.delete, ContentResolver.update, ContentResolver.query 4个方法对程序内部的数据进行增,删,改,查操作。
Android系统中内置的应用大多都提供了Content Provider。
读取联系人信息
public class Main extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView listView = (ListView) findViewById(R.id.listView); //查询系统中所有的联系人 Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); //根据cursor创建SimpleCursorAdapter对象 SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, new String[]{ContactsContract.Contacts.DISPLAY_NAME}, new int[]{R.id.lie}); listView.setAdapter(adapter); }}
uri参数的值是一个常量,定义如下:
public static final String AUTHORITY = "com.android.contacts";public static final Uri AUTHORITY_URI = Uri.parse("content://" + AUTHORITY);public static final Uri CONTENT_URI = Uri.withAppendedPath(AUTHORITY_URI,"contacts");
查询系统联系人需要权限
<uses-permission android:name="android.permission.READ_CONTACTS"/>
上面只是用了查询,当然也可以增加,修改,删除。
查看收件箱的短信
public class Main extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView listView = (ListView) findViewById(R.id.listView); //查询收件箱中电话号以“1”开头的短信 Cursor cursor = getContentResolver().query(Uri.parse("content://sms"), null, "address like ?", new String[]{"1"}, null); //创建SMSAdapter对象 SMSAdapter smsAdapter = new SMSAdapter(this,cursor); listView.setAdapter(smsAdapter); }}
public class SMSAdapter extends CursorAdapter{ private LayoutInflater layoutInflater; public SMSAdapter(Context context,Cursor){ super(context,cursor); //调用LayoutInflater.inflate方法装载布局资源 layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public View newView(Context context,Cursor cursor,ViewGroup parent){ View view = layoutInflater.inflate(R.layout.item,null); return view; } @Override public void bindView(View view, Context context, Cursor cursor){ TextView tvPhoneNumber = (TextView)view.findViewById(R.id.tvPhoneNumber); TextView tvContent = (TextView)view.findViewById(R.id.tvContent); //显示电话号 tvPhoneNumber.setText(cursor.getString(cursor.getColumnIndex("address"))); //显示短信内容 tvContent.setText(cursor.getString(cursor.getColumnIndex(body))); }}
0 0
- Android之内容提供者(Content Provider)
- Android内容提供者(Content provider)
- Android Content Provider(内容提供者)
- Android四大组件之Content Provider(内容提供者)
- Android笔记---四大组件之Content Provider内容提供者详解
- Android四大组件之内容提供者Content Provider总结
- content Provider 内容提供者
- Content Provider内容提供者
- Content Provider 内容提供者
- 内容提供者-Content Provider
- 四大组件之内容提供者Content provider
- 【Android 开发】:Content Provider (内容提供者) 详解
- Android开发--内容提供者(Content provider)
- Android内容提供者(Content provider)
- Android内容提供者(Content provider)
- Android 内容提供者(Content provider)
- android开发 - Content Provider 内容提供者
- Android内容提供者(Content provider)
- STL学习记录(七):Forward List
- 菜鸟学习之路——网络学习GET请求与JSON、XML解析
- [C++] 字面值的类型
- svn add 如何增加子目录下的未受控文件
- Java中获取键盘输入值的三种方法
- Android之内容提供者(Content Provider)
- C语言-2-流程控制
- zthread学习 实例十三 线程间的协助(四)——读者、写者
- 记一次监控问题解决历程
- 菜鸟学习之路——SQLite数据库的学习
- HTML语法大全
- 【listview精深系列2】listview基础讲解
- zthread学习 实例十四 信号量机制
- 条款15:在资源管理类中提供对原始资源的访问