一起Talk Android吧(第二百三十四回:Android中的数据存储之ContentProvider二)

本文主要是介绍一起Talk Android吧(第二百三十四回:Android中的数据存储之ContentProvider二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

各位看官们大家好,上一回中咱们说的是Android中数据存储之ContentProvider的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起Talk Android吧!

看官们,我们在上一回中介绍了如何通过ContentProvider读取联系人模块中的数据,下面是完整的代码,请大家参考:

package com.example.talk8.blogappall;import android.Manifest;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.provider.ContactsContract;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;public class ActivityContentProvider extends AppCompatActivity {private static final String TAG = "DataStorage";private Button mReadContact;private TextView mName;private TextView mPhone;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_content_provider);mReadContact = (Button)findViewById(R.id.read_contact);mName = (TextView)findViewById(R.id.name_contact);mPhone = (TextView)findViewById(R.id.phone_contact);mReadContact.setOnClickListener(v -> CheckPermisson());}//通过ContentProvider读取联系人中数据public void ReadContact() {Cursor cursor = null;Log.i(TAG, "ReadContact: ");try {cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null , null, null);if(cursor != null) {while (cursor.moveToNext()) {Log.i(TAG, "ReadContact: get Cursor");String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));mName.setText("Name: "+name);mPhone.setText("PhoneNumber: "+number);}}}catch (Exception e) {Log.i(TAG, "ReadContact:  Exception");e.printStackTrace();}finally {if(cursor != null) {cursor.close();}}}//访问联系人需要进行权限申请,而且manifest文件中也需要添加权限private void CheckPermisson() {if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS)!= PackageManager.PERMISSION_GRANTED) {Log.i(TAG, "CheckPermisson: ");ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CONTACTS}, 1);}else {Log.i(TAG, "CheckPermisson:  permission is ok");ReadContact();}}//用户选择权限后,依据用户选择来读取数据@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);switch (requestCode) {case 1:if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {Log.i(TAG, "onRequestPermissionsResult: Permisson Approved");ReadContact();}else {Log.i(TAG, "onRequestPermissionsResult: Permisson Rejected");Toast.makeText(this, "Read Contact Permisssion denied", Toast.LENGTH_LONG);}default:break;}}
}

在代码中,我们创建了一个Button并且给它设置了监听器,通过它来读取联系人中数据。在读取联系人数据时需要申请权限,当获得用户允许使用联系人权限后才可以读取其中的数据。

程序中我们把读取的数据通过TextView控件展示到了用户界面上。我在这里就演示程序运行结果了,请大家自己动手来实践。

各位看官,关于Android中数据存储之ContentProvider的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

这篇关于一起Talk Android吧(第二百三十四回:Android中的数据存储之ContentProvider二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/800072

相关文章

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

Android实现悬浮按钮功能

《Android实现悬浮按钮功能》在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(FloatingButton),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍... 目录一、项目概述二、相关技术知识三、实现思路四、整合代码4.1 Java 代码(MainActivi

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键