内容提供者(小扩展)

    技术2022-07-12  74

    手机中存在的内容提供者

    联系人通话记录短信音频图片视频

    联系人

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

    <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); } }
    Processed: 0.013, SQL: 9