ContentProvider

ContentProvider是一个对外发布数据库操作的接口。

普通的SQLite数据库里面的数据库操作,只有当前应用程序自己的可以调用,其他程序无法调用。

如果想让其他程序来调用你的数据库,就需要自己为数据库建立一个ContentProvider,同时其他程序可以通过ContentResolver来调用Provider里封装好的方法。

自己在实际开发中不会编写ContentProvider,主要是编写resolver操作,来调用系统写好的Provider,相当于调用系统的数据库,完成自己需要的功能。

例如:

读取系统数据库中的联系人信息,通话日志,SD卡中所有的音频文件目录,视频文件目录,图片目录。

这里以读取所有音频文件功能为例,来查看ContentResolver的使用方法。

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		Globals.init(this);

		// 设置默认使用的布局文件
		setContentView(R.layout.activity_main);

		// 取得核心对象
		ContentResolver resolver = getContentResolver();

		// 根据一个唯一的标识,来调用某些数据库操作.
		Cursor c = resolver.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
				null, null, null, null);

		if (c.moveToFirst()) {
			while (!c.isAfterLast()) {
				String album = c.getString(c.getColumnIndex(Video.Media.ALBUM));
				String artist = c.getString(c.getColumnIndex(Video.Media.ARTIST));
				String fileName = c.getString(c.getColumnIndex(Video.Media.DISPLAY_NAME));
				String name = c.getString(c.getColumnIndex(Video.Media.TITLE));
				String duration = c.getString(c.getColumnIndex(Video.Media.DURATION));
				String path = c.getString(c.getColumnIndex(Video.Media.DATA));
				
				MediaPlayer player = new MediaPlayer();
				
				System.out.println(album + " --> " + artist + " --> " + name
						+ " --> " + duration + " --> " + path + " --> " + fileName);
				
				c.moveToNext();
			}
		}
		c.close();

	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值