第一行代码笔记 跨程序共享数据 content provider
2017-02-22 14:34
471 查看
一 :介绍
content provider主要用于在不同应用程序之间实现数据共享功能。是android实现跨程序共享数据的标准方式。
它还可以选择只对那一部分数据进行共享,从而保证程序中的隐私数据不会有泄漏风险。
二:使用
两种方式
1.使用现有的内容提供者来读取和操作相应程序中的数据。
2.创建自己的内容提供者给我们程序的数据提供外部访问接口。
使用示例
示例1:使用现有的内容提供者来读取和操作相应程序中的数据。(获取通讯录联系人和电话)
示例2 2.创建自己的内容提供者给我们程序的数据提供外部访问接口。<看完数据库部分再写~~~~~~~~>
content provider主要用于在不同应用程序之间实现数据共享功能。是android实现跨程序共享数据的标准方式。
它还可以选择只对那一部分数据进行共享,从而保证程序中的隐私数据不会有泄漏风险。
二:使用
两种方式
1.使用现有的内容提供者来读取和操作相应程序中的数据。
2.创建自己的内容提供者给我们程序的数据提供外部访问接口。
使用示例
示例1:使用现有的内容提供者来读取和操作相应程序中的数据。(获取通讯录联系人和电话)
public class ContentActivity extends AppCompatActivity { private ListView listview; private List<String> listData; private ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_content); intiView(); } private void intiView() { listview = ((ListView) findViewById(R.id.listview)); listData = new ArrayList<>(); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listData); listview.setAdapter(adapter); // android6.0权限查询 if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{ Manifest.permission.READ_CONTACTS }, 1); } else { getData(); } } /** * 读取联系人姓名电话信息 */ private void getData() { Cursor cursor = null; try { cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); if (cursor != null) { while (cursor.moveToNext()) { String dispalyName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); String phone = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); listData.add(dispalyName + "\n" + phone); } adapter.notifyDataSetChanged(); } } catch (Exception e) { e.printStackTrace(); } finally { cursor.close(); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode) { case 1: if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { getData(); } else { Toast.makeText(this, "您还没有开启权限!", Toast.LENGTH_LONG).show(); } break; } } }
示例2 2.创建自己的内容提供者给我们程序的数据提供外部访问接口。<看完数据库部分再写~~~~~~~~>
相关文章推荐
- 第二行代码学习笔记——第七章:跨程序共享数据——探究内容提供器
- 第一行代码 第7章 内容提供器 --实现跨程序数据共享
- Android之ContentProvider跨程序共享数据入门(笔记二)
- 代码笔记 | 多线程使用queue模块同步访问共享数据
- 第一行代码-7.2 访问其他程序中的数据
- 阅读郭林《第一行代码》的笔记——第7章 跨程序共享数据,探究内容提供器
- 第一行代码阅读笔记---详解分析第一个Android程序
- 20170325_Androidstudio_第一行代码笔记_分析程序
- 第一行代码阅读笔记---详解分析第一个Android程序
- Android之ContentProvider跨程序共享数据入门(笔记一)
- 20170327_Androidstudio_第一行代码笔记_分析程序(续)
- 第一行代码阅读笔记---详解分析第一个Android程序
- 第一行代码笔记 数据存储全方案
- 第一行代码笔记3:数据存储
- Android第一行代码学习笔记四----数据存储
- (第一行代码笔记)调试Android程序
- 随堂笔记第一天:环境变量配置,代码的三种注释方法,第一个程序,基本数据类型------1
- 第一行代码笔记,第六章-----详解数据存储
- 第一行代码笔记3
- 大数据教程(3.10):zookeeper分布式共享锁的程序