0
点赞
收藏
分享

微信扫一扫

安卓开发学习16-5:数据存储:Content Provider

zhyuzh3d 2022-01-20 阅读 27

解析

不同程序处于安全考虑,数据不共享,但是不同程序之间需要进行数据共享,就要使用到Content Provider,实现数据安全共享
在这里插入图片描述

两个重要知识点

在这里插入图片描述

数据模型

在这里插入图片描述
在这里插入图片描述

URI

在这里插入图片描述

步骤

在这里插入图片描述

实例

1、需求:实现app简易读取手机通讯录并显示通讯录姓名列表

2、activit_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/show"
        ></TextView>

</LinearLayout>

3、MainActivity.java

package com.example.content_provider_page;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ContentResolver;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private String columns = ContactsContract.Contacts.DISPLAY_NAME;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView textView = findViewById(R.id.show);

        textView.setText(getQuertData());

    }

    public CharSequence getQuertData(){


        StringBuffer result = new StringBuffer();
//      解析通讯录记录
        ContentResolver contentResolver = getContentResolver();
//      CONTENT_URI定位通讯录数据
        Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null , null , null , null );
//      获取姓名字段所在的索引
        int dataNameCursorIndex = cursor.getColumnIndex(columns);
//      通过指针进行遍历
        for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()){
            String displayName = cursor.getString(dataNameCursorIndex);
            result.append(displayName+"\n");
        }


        return result.toString();
    };
}

4、AndroidManifest.xml中开启读取通讯录权限

    <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>

在这里插入图片描述
5、真机上会是弹出提示请求权限,但是虚拟机上需要手动开启,在设置-找到对应应用并开启通讯录权限

在这里插入图片描述
6、结果
在这里插入图片描述

在这里插入图片描述

举报

相关推荐

0 条评论