Android——ContentProvider
xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.chenshuai.myapplication.ActivityContentProvider"
android:orientation="vertical"> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="查询数据"
android:onClick="chaxun_onclick"/> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="添加数据"
android:onClick="tianjia_onclick"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="更新数据"
android:onClick="gengxin_onclick"/> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="删除数据"
android:onClick="shanchu_onclick"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="读取联系人信息"
android:onClick="duqu_onclick"/> </LinearLayout>
JAVA
package com.example.chenshuai.myapplication; import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast; public class ActivityContentProvider extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activity_content_provider);
/*
Intent intent = new Intent(Intent.ACTION_DIAL); Uri uri = Uri.parse("tel:110"); intent.setData(uri);*/
}
public void chaxun_onclick(View view)
{
//获得解析器
ContentResolver contentResolver = getContentResolver(); Uri uri = Uri.parse("content://com.example.cheshuai.test.activityhhh1/black_number"); /*contentResolver.update(uri,new ContentValues(),"",new String[]{}); Toast.makeText(ActivityContentProvider.this, "调用内容提供者", Toast.LENGTH_SHORT).show();*/ Cursor cursor = contentResolver.query(uri, null, null, null, null); while (cursor.moveToNext())
{
Toast.makeText(ActivityContentProvider.this, "遍历数据:_id = "+cursor.getLong(0)+
"phone_number= "+cursor.getString(1), Toast.LENGTH_SHORT).show();
} cursor.close();
}
public void tianjia_onclick(View view)
{
//获得解析器
ContentResolver contentResolver = getContentResolver(); Uri uri = Uri.parse("content://com.example.cheshuai.test.activityhhh1/black_number"); /*contentResolver.update(uri,new ContentValues(),"",new String[]{}); Toast.makeText(ActivityContentProvider.this, "调用内容提供者", Toast.LENGTH_SHORT).show();*/ ContentValues c= new ContentValues();
c.put("phone_number","123456"); uri = contentResolver.insert(uri,c); long id = ContentUris.parseId(uri); Toast.makeText(ActivityContentProvider.this, "新数据的id="+id, Toast.LENGTH_SHORT).show();
}
public void gengxin_onclick(View view)
{
//获得解析器
ContentResolver contentResolver = getContentResolver(); Uri uri = Uri.parse("content://com.example.cheshuai.test.activityhhh1/black_number"); /*contentResolver.update(uri,new ContentValues(),"",new String[]{}); Toast.makeText(ActivityContentProvider.this, "调用内容提供者", Toast.LENGTH_SHORT).show();*/ ContentValues c= new ContentValues(); c.put("phone_number","123456"); int content = contentResolver.update(uri, c, null, null); Toast.makeText(ActivityContentProvider.this, "返回修改的数据?"+content, Toast.LENGTH_SHORT).show();
}
public void shanchu_onclick(View view)
{
ContentResolver contentResolver = getContentResolver(); Uri uri = Uri.parse("content://com.example.cheshuai.test.activityhhh1/black_number"); int btn = contentResolver.delete(uri, "_id>?", new String[]{"1"}); Toast.makeText(ActivityContentProvider.this, "删除数据条数"+btn, Toast.LENGTH_SHORT).show(); }
public void duqu_onclick(View view)
{
ContentResolver contentResolver = getContentResolver(); //联系人信息的URI 授权
//管理联系人的Uri
//ContactsContract.Contacts.CONTENT_URI //管理联系人电话的Uri
//ContactsContract.CommonDataKinds.Phone.CONTENT_URI
Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null, null); while(cursor.moveToNext())
{
long id = cursor.getLong(cursor.getColumnIndex(ContactsContract.Contacts._ID)); String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); Toast.makeText(ActivityContentProvider.this, "数据id= "+id + "数据name= "+name, Toast.LENGTH_SHORT).show(); //通过id查询联系人的电话信息 Cursor cursor1 = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?", new String[]{id +""},null); while (cursor1.moveToNext())
{
String phone = cursor1.getString(cursor1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); Toast.makeText(ActivityContentProvider.this, "电话信息= "+ phone, Toast.LENGTH_SHORT).show(); }
cursor1.close();
}
cursor.close(); } }
manifest
<!-- 读取联系人权限 -->
<uses-permission android:name="android.permission.READ_CONTACTS" /> <provider
android:name=".MyContentProvider"
android:authorities="com.example.cheshuai.test.activityhhh1"
android:enabled="true"
android:exported="true" />
Android——ContentProvider的更多相关文章
- Android基础 : Android ContentProvider
Android 应用程序通过ContentProvider实现方式统一的数据共享功能. 外界的程序通过ContentResolver接口可以访问ContentProvider提供的数据,在Activi ...
- Android ContentProvider完整案例
ContentData类,提供数据常量: /** * 提供ContentProvider对外的各种常量,当外部数据需要访问的时候,就可以参考这些常量操作数据. * @author HB * */ pu ...
- Android ContentProvider基本用法
转自:https://www.jianshu.com/p/601086916c8f 一.基本概念 ContentProvider是Android系统中提供的专门用户不同应用间进行数据共享的组件,提供了 ...
- Android ContentProvider 启动分析
对于 ContentProvider 还不是很熟悉的同学,可以阅读上一篇 Android ContentProvider 基本原理和使用详解.本文主要是对 contentProvider 的源码进行分 ...
- Android ContentProvider介绍
在Android中数据的存储一共有五种形式,分别是:Shared Preferences.网络存储.文件存储,外储存储.SQLite.但是我们知道一般这些存储都只是在单独的一个应用程序之中达到一个数据 ...
- Android ContentProvider 简单学习
当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.以前我们学习过文件的操作模式,通过指定文件的操作模式为Context.MODE_WORL ...
- Android ContentProvider的实现
当Android中的应用需要访问其他应用的数据时,用ContentProvider可以很好的解决这个问题.今天介绍一下ContentProvider的用法. 首先开发ContentProvider有两 ...
- Android ContentProvider和Uri详解 (绝对全面)
ContentProvider的基本概念 : 1.ContentProvider为存储和读取数据提供了统一的接口 2.使用ContentProvider,应用程序可以实现数据共享 3.andr ...
- Android ContentProvider和getContentResolver
安卓系统中的数据库SqlLite操作和java中mysql的数据库操作很不一样,造成这样的原因是因为在安卓中数据库是属于进程的不存在数据库客户端,也不存在数据库服务器. 关于SqlLite数据库的文章 ...
- android ContentProvider学习
1.ContentProvider提供位存储或获取数据提供了统一的接口. 2.使用ContentProvider可以在不同的应用程序之间共享数据. 3.Android为常见的一些数据提供了Conten ...
随机推荐
- java 和 C++ Socket通信(java作为服务端server,C++作为客户端client,解决中文乱码问题GBK和UTF8)
原文链接: http://www.cnblogs.com/kenkofox/archive/2010/04/25/1719649.html 代码: http://files.cnblogs.com/k ...
- SharePoint 2013 Farm 安装指南——构建一个双层SharePoint Farm
最近要对公司里的SharePoint进行升级,由于旧的系统SharePoint 2010已经有2年了,上面改动比较多,而且权限也很混乱了,所以下定决心要对其做一次升级,重新部署一台新的SharePoi ...
- databus编译: Execution failed for task ':databus-core:databus-core-impl:compileJava'.
在编译databus的过程中,出现了无法找到jdk的错误: 在/etc/.bashrc和/etc/profile中都配置了JAVA_HOME,依然报错,重启后还是报错,原因的是ubuntu中默认的jd ...
- 译: 2. Apache Axis2安装指南
Apache Axis2安装指南 本文档提供有关Axis2分发包,系统先决条件以及设置环境变量和工具的信息,然后提供有关安装方法的详细说明. 请将您的反馈发送至:java-dev@axis.apach ...
- 开发集成工具MyEclipse中Outline的问题
序言 不懂的多查,越查就越显得自己的无知,越发现大神的存在,可能相对于我来说是大神,在他那个高度,就觉得自己很菜,这些都正常,最值得敬佩的是,比你厉害的人,还比你更努力,那自己还有什么理由不努力呢,如 ...
- Android Lock Pattern 图案解锁
参考链接:http://www.cnblogs.com/dyingbleed/archive/2012/12/03/2800007.html http://blog.csdn.net/way_ping ...
- LeetCode(35) Search Insert Position
题目 Given a sorted array and a target value, return the index if the target is found. If not, return ...
- CMD命令下访问Oracle数据库
1.非集群下 Windows环境下数据库 127.0.0.1 只是个IP代表 实际要输入你要访问的数据库服务器IP地址的 如果数据库服务器不在本机上,需要加上数据库服务器的地址:用户名/密码@IP地 ...
- 每日英语:Does China Face a Reading Crisis?
For much of the last year, intellectuals and officials in China -- land of world-beating students an ...
- 【转】Android项目使用Ant打包,生成build.xml
记不住,于是原帖转过来,请看原帖:http://blog.csdn.net/ms03001620/article/details/8490238 一.生成build.xml Eclipse中使用Ant ...