Android端通话记录读取
来源:互联网 发布:巴塞罗那进球数据 编辑:程序博客网 时间:2024/06/05 16:03
Android端读取手机通话记录,直接上代码:
public class CallInfo {
public String name;
public String number; // 号码
public long date; // 日期
public int type; // 类型:来电、去电、未接
public String duration;
private static CallInfo singleton=null;
public static synchronized CallInfo getInstance(String name, String number, long date, int type, String duration){
// if(singleton==null){
// singleton = new CallInfo(name,number,date,type,duration);
// }
singleton = new CallInfo(name,number,date,type,duration);
return singleton;
}
public CallInfo(String name, String number, long date, int type, String duration) { this.name = name; this.number = number; this.date = date; this.type = type; this.duration = duration;}public String getName() { return name;}public void setName(String name) { this.name = name;}public String getNumber() { return number;}public void setNumber(String number) { this.number = number;}public long getDate() { return date;}public void setDate(long date) { this.date = date;}public int getType() { return type;}public void setType(int type) { this.type = type;}public String getDuration() { return duration;}public void setDuration(String duration) { this.duration = duration;}
}
public class CallInfoService {
/** * 获取通话记录 * * @param context 上下文。通话记录需要从系统的【通话应用】中的内容提供者中获取,内容提供者需要上下文。通话记录保存在联系人数据库中:data/data/com.android.provider.contacts/databases/contacts2.db库中的calls表。 * @return 包含所有通话记录的一个集合 */public static List<CallInfo> getCallInfos(final Context context) { final List<CallInfo> infos = new ArrayList<>(); final List<CallInfo> newList = new ArrayList<>(); RxPermissions.getInstance(context).request(Manifest.permission.READ_CALL_LOG) .subscribe(new Action1<Boolean>() { @Override public void call(Boolean aBoolean) { if (aBoolean) { ContentResolver resolver = context.getContentResolver(); // uri的写法需要查看源码JB\packages\providers\ContactsProvider\AndroidManifest.xml中内容提供者的授权 // 从清单文件可知该提供者是CallLogProvider,且通话记录相关操作被封装到了Calls类中 Uri uri = CallLog.Calls.CONTENT_URI; String[] projection = new String[]{ CallLog.Calls.CACHED_NAME,//姓名 CallLog.Calls.NUMBER, // 号码 CallLog.Calls.DATE, // 日期 CallLog.Calls.TYPE, // 类型:来电、去电、未接 CallLog.Calls.DURATION }; if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_CALL_LOG) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } try { Cursor cursor = resolver.query(uri, projection, null, null, null); while (cursor.moveToNext()) { if (infos.size()>2000){ break; }
// instance = CallInfo.getInstance();
// instance.setName(cursor.getString(0));
// instance.setNumber(cursor.getString(1));
// instance.setDate(cursor.getLong(2));
// instance.setType(cursor.getInt(3));
// instance.setDuration(cursor.getString(4));
// infos.add(instance);
String name = cursor.getString(0);
String number = cursor.getString(1);
long date = cursor.getLong(2);
int type = cursor.getInt(3);
String duration=cursor.getString(4);
infos.add(CallInfo.getInstance(name,number,date,type,duration));
// infos.add(new CallInfo(name, number, date, type,duration));
}
cursor.close();
} catch (Exception e) {
e.printStackTrace();
}
for (int i = 0; i < infos.size(); i++) { for (int j = i + 1; j < infos.size(); j++) { if (infos.get(i).getNumber().equals(infos.get(j).getNumber())) { newList.add(infos.get(i)); break; } } } } else { Toast.makeText(context, "请开启通话记录权限", Toast.LENGTH_SHORT).show(); } } }); return newList;}
}
- Android端通话记录读取
- android 读取手机通话记录
- android中读取联系人和通话记录
- android中读取联系人和通话记录
- android中根据电话号码读取通话记录表
- android读取联系人,短信,通话记录,IMSI
- Android 6.0 通话记录生成保存和读取显示
- Android手机用户隐私获取,包括读取通讯录、读取通话记录、读取浏览器历史记录、读取手机短信
- Android手机用户隐私获取,包括读取通讯录、读取通话记录、读取浏览器历史记录、读取手机短信
- iPhone上读取通话记录
- 读取通话记录的权限
- 16读取通话记录
- Android6.0读取通话记录
- ContentProvider读取通讯录和通话记录
- android 通话记录次数
- android中获取通话记录
- Android 获取通话记录
- android查询通话记录小结
- pat b 1034 有理数四则运算
- mdev的使用方法和原理
- select * into 新表名 from 原表名 where 子句报错Undeclared variable
- php.ini修改php上传文件大小限制的方法详解
- 安卓,Rxjava观察者被观察者操作
- Android端通话记录读取
- javascript中this的指向详解
- echart 属性含义
- Mysql查询效率优化
- 代理设计模式在页面中的应用
- 字符编码和python使用encode,decode转换utf-8, gbk, gb2312
- 使用Go与redis构建有趣的应用
- Kotlin学习--集合操作符之总数操作符
- windows下,C++实现串口编程,串间口转发数据