首页 > 其他分享 >ContentProvider初涉

ContentProvider初涉

时间:2023-03-10 18:24:36浏览次数:38  
标签:operations withValue 联系人 ContentProviderOperation cursor ContentProvider 初涉

ContentProvider(内容提供者)是安卓四大组件之一

它的主要作用:

我们想在自己的应用中访问别的应用或者ContentProvider暴露给我们的一些数据如联系人或短信等。并且想对这些数据进行读取或者修改,这就需要用到ContentProvider。

我们自己的应用,想把自己的一些数据暴露出来,给其他的应用进行读取或操作,也可以用ContentProvider。

例子:

读取手机联系人:

private void getContacts(){
    //查询raw_contacts表获得联系人的id
    ContentResolver resolver = getContentResolver();
    Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
    //查询联系人数据
    cursor = resolver.query(uri, null, null, null, null);
    while(cursor.moveToNext())
    {
        //获取联系人姓名,手机号码
        String cName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
        String cNum = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
        System.out.println("姓名:" + cName);
        System.out.println("号码:" + cNum);
        System.out.println("======================");
    }
    cursor.close();
}

同时要加联系人的权限:

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

添加手机联系人:

private void AddContact() throws RemoteException, OperationApplicationException {
    //使用事务添加联系人
    Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
    Uri dataUri =  Uri.parse("content://com.android.contacts/data");

    ContentResolver resolver = getContentResolver();
    ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();
    ContentProviderOperation op1 = ContentProviderOperation.newInsert(uri)
            .withValue("account_name", null)
            .build();
    operations.add(op1);

    //依次是姓名,号码,邮编
    ContentProviderOperation op2 = ContentProviderOperation.newInsert(dataUri)
            .withValueBackReference("raw_contact_id", 0)
            .withValue("mimetype", "vnd.android.cursor.item/name")
            .withValue("data2", "Coder-pig")
            .build();
    operations.add(op2);

    ContentProviderOperation op3 = ContentProviderOperation.newInsert(dataUri)
            .withValueBackReference("raw_contact_id", 0)
            .withValue("mimetype", "vnd.android.cursor.item/phone_v2")
            .withValue("data1", "13798988888")
            .withValue("data2", "2")
            .build();
    operations.add(op3);

    ContentProviderOperation op4 = ContentProviderOperation.newInsert(dataUri)
            .withValueBackReference("raw_contact_id", 0)
            .withValue("mimetype", "vnd.android.cursor.item/email_v2")
            .withValue("data1", "[email protected]")
            .withValue("data2", "2")
            .build();
    operations.add(op4);
    //将上述内容添加到手机联系人中~
    resolver.applyBatch("com.android.contacts", operations);
    Toast.makeText(getApplicationContext(), "添加成功", Toast.LENGTH_SHORT).show();
}
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_PROFILE"/>

部分参考自菜鸟教程

标签:operations,withValue,联系人,ContentProviderOperation,cursor,ContentProvider,初涉
From: https://www.cnblogs.com/rsy-bxf150/p/17204363.html

相关文章

  • ContentProvider+BroadCast的使用
    内容提供者的官方定义如下:  首先是ContentProvider的使用,翻译成中文就是内容提供者,作用就是比如我在从微信往qq传一张图片,我需要一个内容提供者,这里我的微信里面的图......
  • android基础02-广播、持久化、权限、ContentProvider
    广播Android中的每个应用程序都可以对自己感兴趣的广播进行注册,这样该程序就只会收到自己所关心的广播内容,这些广播可能是来自于系统的,也可能是来自于其他应用程序的。......
  • 漏洞实战部分3-ContentProvider组件的openFile接口问题
    前期回顾可以关注微信公众号安卓应用漏洞学习case3本课程学习ContentProvider组件的openFile接口。ContentProvider组件主要作用实现各个应用程序之间的数据共享。可以把......
  • 使用 ContentProvider 共享数据 访问与添加通讯录
    1.统一的数据访问方式当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据。文件的操作模式中,通过指定文件的操作模式为Contex......
  • 19.内容提供者ContentProvider
    之前我们学习了Android数据持久化的技术,包括文件存储(内部存储)、SharedPreferences存储以及数据库存储。这些持久化技术所保存的数据基本都是在当前应用程序中访问。Andro......
  • 移动开发----ContentProvider之获取数据
    1.设计目标利用contentprovider获取数据2.实现功能自建一个provider,然后在另一个app中使用resolver调用这个provider。3.代码分析首先,在AS上创建两个新项目,命名为Myr......
  • Android开发 内容提供者ContentProvider
    前言ContentProvider内容提供者属于Android四大组件之一,是用来让App将一些共享数据提供给外部操作的组件。一般情况下是配合数据库使用,将数据库内容外露给外部进行增......
  • 第一行代码3:ContentProvider问题
    在providertest项目中查询databasetest项目的数据库出现问题Failedtofindproviderinfoforcom.example.databasetest.providerjava.lang.IllegalArgumentException:......