内容提供者(小扩展)

手机中存在的内容提供者

联系人

首先要在清单文件中添加静态权限,才能访问手机中的联系人

 <uses-permission android:name="android.permission.READ_CONTACTS"/>
//查询联系人
public void GetLinkman() {
    //获取提供者
    ContentResolver resolver = getContentResolver();
    //在这里转换联系人Uri
    Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;//联系人的表名
    //进行查询操作
    Cursor query = resolver.query(uri, null, null, null, null);
    if (query != null) {
        while (query.moveToNext()) {
            //姓名
            String name = query.getString(query.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            //手机号
            String number = query.getString(query.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            Log.i("---", "姓名:"+name + "=手机号:" + number);
        }
        query.close();
    }
}

通话记录

首先要在清单文件中添加静态权限,才能访问手机中的通话记录

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

这里可以对通话记录进行增删改查的操作

//添加通话记录
private void AddCallLog() {
    //获取提供者
    ContentResolver resolver = getContentResolver();
    //在这里转换通话记录的Uri
    Uri uri = CallLog.Calls.CONTENT_URI;//通话记录的表名
    //因为添加的方法里需要ContentValues类型的参数
    ContentValues values = new ContentValues();
    values.put(CallLog.Calls.NUMBER, "16666666666");//手机号
    values.put(CallLog.Calls.DATE, "2020-06-27");//时间
    values.put(CallLog.Calls.TYPE, "拨打");//状态
    values.put(CallLog.Calls.DURATION, "2:02");//时长
    //需要添加一个动态权限
    if (checkSelfPermission(Manifest.permission.WRITE_CALL_LOG) != PackageManager.PERMISSION_GRANTED) {
        return;
    }
    //进行添加操作  表名  添加的列
    resolver.insert(uri, values);
}

//查询通话记录
public void GetCallLog() {
    //获取提供者
    ContentResolver resolver = getContentResolver();
    //在这里转换通话记录的Uri
    Uri uri = CallLog.Calls.CONTENT_URI;//通话记录的表名
    String[] strings = new String[]{
            //       手机号            日期时间
            CallLog.Calls.NUMBER, CallLog.Calls.DATE,
            //       状态              通话时长
            CallLog.Calls.TYPE, CallLog.Calls.DURATION};
    //需要添加一个动态权限
    if (checkSelfPermission(Manifest.permission.READ_CALL_LOG) != PackageManager.PERMISSION_GRANTED) {
        return;
    }

    //进行查询操作                表名  查询的列  条件  条件值 排序方式
    Cursor query = resolver.query(uri, strings, null, null, null);
    if (query != null) {
        while (query.moveToNext()) {
            String number = query.getString(query.getColumnIndex(CallLog.Calls.NUMBER));//电话号码
            String type = query.getString(query.getColumnIndex(CallLog.Calls.TYPE));//状态
            String date = query.getString(query.getColumnIndex(CallLog.Calls.DATE));//日期
            String duration = query.getString(query.getColumnIndex(CallLog.Calls.DURATION));//通话时长
            Log.i("---", "手机号:"+number + "=类型:" + type + "=日期:" + date + "=通话时长:" + duration);
        }
        query.close();
    }
}

//修改通话记录
public void UpdCallLog() {
    //获取提供者
    ContentResolver resolver = getContentResolver();
    //在这里转换通话记录的Uri
    Uri uri = CallLog.Calls.CONTENT_URI;//通话记录的表名
    //因为修改的方法里需要一个ContentValues类型的参数
    ContentValues values = new ContentValues();
    values.put(CallLog.Calls.DURATION, "1:11");
    //需要添加一个动态权限
    if (checkSelfPermission(Manifest.permission.WRITE_CALL_LOG) != PackageManager.PERMISSION_GRANTED) {
        return;
    }
    //进行修改      表名  新值              修改要符合的条件                       给?赋值
    resolver.update(uri, values, CallLog.Calls.NUMBER + "= ?", new String[]{"16666666666"});
}

//删除通话记录
public void DelCallLog() {
    Uri uri = CallLog.Calls.CONTENT_URI;//通话记录的表名
    //需要添加一个动态权限
    if (checkSelfPermission(Manifest.permission.WRITE_CALL_LOG) != PackageManager.PERMISSION_GRANTED) {
        return;
    }
    //进行删除      表名            删除要符合的条件              给?赋值
    resolver.delete(uri,CallLog.Calls.DURATION+"= ?",new String[]{"1:11"});
}

短信

首先要在清单文件中添加静态权限,才能访问手机中的短信

<uses-permission android:name="android.permission.READ_SMS"/>
//查询短信
public void getMsg(){
    Uri uri = Telephony.Sms.CONTENT_URI;//转换短信的Uri
    //查询参数里需要String数组,数组里就是短信的字段名
    String[] strings = new String[]{
            Telephony.Sms.ADDRESS,//短信地址
            Telephony.Sms.BODY//短信内容
    };
    //                           表名   数组     条件   给条件赋值   排序
    Cursor query = resolver.query(uri, strings, null,    null,     null);
    while(query.moveToNext()){
        String address = query.getString(query.getColumnIndex(Telephony.Sms.ADDRESS));//获取短信地址
        String body = query.getString(query.getColumnIndex(Telephony.Sms.BODY));//获取短信内容
        Log.i("---","地址:"+address+"内容:"+body);
    }
}

音频

首先要在清单文件中添加静态权限,才能访问手机中的音频

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
//查询音频
public void getMusice(){
    Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;//转换音频的Uri
    //                            表名    要查询的字段(查询所有字段就赋值为null)
    Cursor query = resolver.query(uri,       null, 
            //查询条件   给条件赋值    排序
            null,         null,      null);
    
    while(query.moveToNext()){
        String title = query.getString(query.getColumnIndex(MediaStore.Audio.Media.TITLE));//获取歌名
        String artist = query.getString(query.getColumnIndex(MediaStore.Audio.Media.ARTIST));//获取歌手
        String duration = query.getString(query.getColumnIndex(MediaStore.Audio.Media.DURATION));//获取时长
        String data = query.getString(query.getColumnIndex(MediaStore.Audio.Media.DATA));//获取地址
        Log.i("---","歌名:"+title+"歌手:"+artist+"总时长:"+duration+"地址:"+data);
    }
}

图片

首先要在清单文件中添加静态权限,才能访问手机中的图片

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
//查询图片
public void getPic(){
    Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;//转换图片的Uri
    //                           表名   要查询的字段(查询所有字段就赋值为null)
    Cursor query = resolver.query(uri,     null, 
            //查询条件   给条件赋值    排序
            null,        null,       null);
    while(query.moveToNext()){
        String title = query.getString(query.getColumnIndex(MediaStore.Images.Media.TITLE));//获取图片名称
        String size = query.getString(query.getColumnIndex(MediaStore.Images.Media.SIZE));//获取图片大小
        String data = query.getString(query.getColumnIndex(MediaStore.Images.Media.DATA));//获取图片地址
        Log.i("---","图片名称:"+title+"图片大小:"+size+"图片地址:"+data);
    }
}

视频

首先要在清单文件中添加静态权限,才能访问手机中的视频

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
//查询视频
public void getVido(){
    Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;//转换视频的Uri
    //                           表名   要查询的字段(查询所有字段就赋值为null)
    Cursor query = resolver.query(uri,     null,
            //查询条件   给条件赋值    排序
            null,        null,       null);
    while(query.moveToNext()){
        String title = query.getString(query.getColumnIndex(MediaStore.Video.Media.TITLE));//获取视频名称
        String artist = query.getString(query.getColumnIndex(MediaStore.Video.Media.ARTIST));//获取视频作者
        String duration = query.getString(query.getColumnIndex(MediaStore.Video.Media.DURATION));//获取视频时长
        String data = query.getString(query.getColumnIndex(MediaStore.Video.Media.DATA));//获取视频地址
        Log.i("---","视频名称:"+title+"视频:"+artist+"总时长:"+duration+"地址:"+data);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值