0%

Android ContentProvider的使用 读取手机内音频 视频 图片文件

ContentProvider是Android里一个很重要的组件,可以让我们很方便地读取系统内各种共享的数据,如联系人,音频,视频,图片等.在系统开机,或者插入SD卡后,系统会自动索引卡内的媒体文件,存入数据库,其他应用程序需要调用时可以通过ContentProvider来获取.ContentProvider的使用跟SQLite数据库非常相似,只是查询的表名改成了相应的Uri.

package com.hello;

import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;

public class HelloWorldActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ContentResolver cr = getContentResolver();
        //ContentProvider只能由ContentResolver发送请求
        Uri AUDIO_URI = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
        //获取音频文件的URI,
        //视频 MediaStore.Video.Media.EXTERNAL_CONTENT_URI
        //图片MediaStore.Images.Media.EXTERNAL_CONTENT_URI
        String[] columns  = new String[] {MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.DATA};
        //要读的列名,这些常量可以查GOOGLE官方开发文档,TITLE是标题 DATA是路径
        Cursor cursor = cr.query(AUDIO_URI, columns, MediaStore.Audio.Media.DURATION+">?", new String[]{"10000"}, null);
        //跟查询SQL一样了,除了第一个参数不同外.后面根据时长过滤小于10秒的文件
        while(cursor.moveToNext()){
            //循环读取第一列,即文件路径,0列是标题
            System.out.println(cursor.getString(1));
        }
        cursor.close();
       
        
    }

}