zoukankan      html  css  js  c++  java
  • android数据提供者ContentProvider

    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	Name
    "+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)+"	";
                result+=cursor.getString(nameIndex)+"
    ";
            }
            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>

     看下效果

  • 相关阅读:
    第十一周项目6-回文&素数(一)
    第十一周项目1-函数版星号图(三) .
    囚徒困境 For BBasic
    第十一周项目5-当年第几天
    第十一周项目4-特殊三位数
    第十一周项目3-程序的多文件组织
    第十一周项目2-求最大公约数
    第十一周项目1-函数版星号图(二)
    第十一周项目1-函数版星号图(一)
    第十周-囚徒困境
  • 原文地址:https://www.cnblogs.com/alwaysfirst/p/4011031.html
Copyright © 2011-2022 走看看