ContentProvider

Android中,ContentProvider为应用之间共享数据提供统一接口,例如系统通讯录等。通过ContentProvider接口,其他应用可以和使用数据库一样,实现增删改查功能。实际上,开发中一般不用自定义ContentProvider,而是调用系统应用的ContentProvider。

ContentResolver

从ContentProvider获取数据,使用ContentResolver。这里以读取联系人为例子。

MainActivity.java

public class MainActivity extends Activity
{

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


    public void readContacts(View view)
    {
        //封装好的联系人URI
        Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
        //使用游标读取数据
        Cursor cursor = getContentResolver().query(uri, null, null, null, null);
        if (cursor != null)
        {
            while (cursor.moveToNext())
            {
                String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                Toast.makeText(this, displayName + number, Toast.LENGTH_SHORT).show();
            }

            cursor.close();
        }
    }
}

注:需要添加读取联系人权限

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap