android数据提供者ContentProvider
16lz
2021-01-26
ContentProvider的主要功能是存储并检索数据以及向其他应用程序提供访问数据的接口
我们来做个简单的例子,检索手机的联系人信息
activity_main.xml
<RelativeLayout 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" tools:context="com.ssln.contentresolver.MainActivity" > <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" /></RelativeLayout>
MainActivity.java
package com.ssln.contentresolver;import android.content.ContentResolver;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.provider.Contacts.People;import android.support.v7.app.ActionBarActivity;import android.widget.TextView;public class MainActivity extends ActionBarActivity { //要查询的字段 String[] columns={People._ID,People.NAME}; //查询联系人的URI Uri contactUri=People.CONTENT_URI; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv=(TextView)findViewById(R.id.tv); tv.setText("ID\tName\n"+getContactData()); } private String getContactData(){ String result=""; ContentResolver resolver=getContentResolver(); Cursor cursor=resolver.query(contactUri, columns, null, null, null); int idIndex=cursor.getColumnIndex(People._ID); int nameIndex=cursor.getColumnIndex(People.NAME); for(cursor.moveToFirst();(!cursor.isAfterLast());cursor.moveToNext()){ result+=cursor.getString(idIndex)+"\t"; result+=cursor.getString(nameIndex)+"\n"; } cursor.close(); return result; }}
记得加入访问联系人的权限
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ssln.contentresolver" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" /> <uses-permission android:name="android.permission.READ_CONTACTS"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
看下效果
更多相关文章
- android读书知识点总结
- Activity页面状态保存 持久化
- Android学习笔记(十二)——数据存储(SQLite数据库)
- android的sqlite数据库中单引号的诡异作用
- [置顶] Android(安卓)入门基础(9) ---SharedPreferences
- Android(安卓)访问HTTP资源
- android 之数据存储(IO)
- json 的解析-使用Android中的JSONObject和JSONArray解析json数据
- Android(安卓)数据库操作:Room