获取权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
requestPermissions(new String[]{Manifest.permission.READ_CONTACTS,Manifest.permission.CALL_PHONE},999);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 999&&grantResults[0]==PackageManager.PERMISSION_GRANTED){
}else {
finish();
}
}
1.list集合查询数据库联系人
public void btn(View view) {
Cursor query = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
if (query!=null){
while (query.moveToNext()){
String sql ="insert into phone values (?,?,?)";
String name = query.getString(query.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String number = query.getString(query.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Person person = new Person(name,number);
Toast.makeText(this, name+":"+number, Toast.LENGTH_SHORT).show();
readableDatabase.execSQL(sql,new Object[]{null,name,number});
list.add(person);
}
Toast.makeText(this, "添加成功", Toast.LENGTH_SHORT).show();
query.close();
MyListAdapter myListAdapter = new MyListAdapter(this, list);
listView.setAdapter(myListAdapter);
}
}
2.查询联系人
public void btn1(View view) {
Cursor query = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_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));
Toast.makeText(this, "姓名:"+name+"手机号:"+number, Toast.LENGTH_SHORT).show();
}
query.close();
}
}
3.查询短信
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
public void btn2(View view) {
Cursor query = contentResolver.query(Telephony.Sms.CONTENT_URI, null, null, null, null);
if (query!=null){
while (query.moveToNext()){
String user = query.getString(query.getColumnIndex(Telephony.Sms.ADDRESS));
String content = query.getString(query.getColumnIndex(Telephony.Sms.BODY));
Toast.makeText(this, "用户:"+user+"内容:"+content, Toast.LENGTH_SHORT).show();
}
query.close();
}
}
3.查询通话记录
public void btn3(View view) {
Cursor query = contentResolver.query(CallLog.Calls.CONTENT_URI, null, null, null, null);
if (query!=null){
while (query.moveToNext()){
String num = query.getString(query.getColumnIndex(CallLog.Calls.NUMBER));
String date = query.getString(query.getColumnIndex(CallLog.Calls.DATE));
String duration = query.getString(query.getColumnIndex( CallLog.Calls.DURATION));
Toast.makeText(this, "号码:"+num+"时间:"+date+"拨打时长:"+duration, Toast.LENGTH_SHORT).show();
}
query.close();
}
}
4.获取手机内的音频
@RequiresApi(api = Build.VERSION_CODES.O)
public void btn2(View view) {
Cursor cursor = contentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
if (cursor!=null){
while (cursor.moveToNext()){
String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE ));
String data=cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DATA));
String artist=cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.ARTIST));
Long duration = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));
Long size = cursor.getLong(cursor.getColumnIndex(MediaStore.Video.Media.SIZE));
Log.i(TAG,"音频: "+title+":"+data+":"+artist+":"+duration+":"+size);
}
cursor.close();
}
}
5.获取手机内的视频
@RequiresApi(api = Build.VERSION_CODES.O)
public void btn3(View view) {
Cursor cursor = contentResolver.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
if (cursor!=null){
while (cursor.moveToNext()){
String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE ));
String data=cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DATA));
String artist=cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.ARTIST));
Long duration = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));
Long size = cursor.getLong(cursor.getColumnIndex(MediaStore.Video.Media.SIZE));
Log.i(TAG, "视频: "+title+":"+data+":"+artist+":"+duration+":"+size);
}
cursor.close();
}
}
6.获取手机内的图片
@RequiresApi(api = Build.VERSION_CODES.O)
public void btn4(View view) {
Cursor cursor = contentResolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null,null);
if (cursor!=null){
while (cursor.moveToNext()){
String title = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.TITLE));
long size = cursor.getLong(cursor.getColumnIndex(MediaStore.Images.Media.SIZE));
String data = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
String height = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.HEIGHT));
String width = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.WIDTH));
Log.i(TAG, "图片: 图片名称:"+title+"图片大小:"+size+"地址:"+data+"图片高度:"+height+"图片宽度:"+width);
}
cursor.close();
}
}
7.获取所有断线
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
public void btn5(View view) {
Cursor cursor = contentResolver.query(Telephony.Sms.CONTENT_URI, null, null, null, null);
if (cursor!=null){
while (cursor.moveToNext()){
String address = cursor.getString(cursor.getColumnIndex(Telephony.Sms.ADDRESS));
String body = cursor.getString(cursor.getColumnIndex(Telephony.Sms.BODY));
Log.i(TAG, "短信: 地址:"+address+"内容:"+body);
}
cursor.close();
}
}
8.对联系人的增删改查
public void insert(View view) {
ContentValues contentValues = new ContentValues();
contentValues.put(CallLog.Calls.NUMBER,"110");
contentValues.put(CallLog.Calls.DATE,"10:29");
contentValues.put(CallLog.Calls.TYPE,1);
contentValues.put(CallLog.Calls.DURATION,"1分钟");
contentResolver.insert(CallLog.Calls.CONTENT_URI,contentValues);
}
public void select(View view) {
Cursor cursor = contentResolver.query(CallLog.Calls.CONTENT_URI, null, null, null, null);
if (cursor!=null){
while (cursor.moveToNext()){
String number = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER));
String date = cursor.getString(cursor.getColumnIndex( CallLog.Calls.DATE));
String type = cursor.getString(cursor.getColumnIndex( CallLog.Calls.TYPE));
String duration = cursor.getString(cursor.getColumnIndex( CallLog.Calls.DURATION));
Log.i(TAG, "select: 号码:"+number+"日期"+date+"类型:"+type+"时长:"+duration);
}
cursor.close();
}
}
public void delete(View view) {
int delete = contentResolver.delete(CallLog.Calls.CONTENT_URI, "number = ?", new String[]{"8419156"});
Toast.makeText(this, "成功删除:"+delete, Toast.LENGTH_SHORT).show();
}
public void update(View view) {
ContentValues contentValues = new ContentValues();
contentValues.put("number","8419156");
int update = contentResolver.update(CallLog.Calls.CONTENT_URI, contentValues, "number = ?", new String[]{"110"});
Toast.makeText(this, "成功修改"+update,Toast.LENGTH_SHORT).show();
}