Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android Studio中获取最新的通话记录?_Android_Android Cursor_Telephonymanager_Calllog - Fatal编程技术网

如何在Android Studio中获取最新的通话记录?

如何在Android Studio中获取最新的通话记录?,android,android-cursor,telephonymanager,calllog,Android,Android Cursor,Telephonymanager,Calllog,我有一个下面的代码。但我不能限制它。我只想得到最后20个通话记录。 但这就是我看到所有时间搜索日志的方式 这应该是最后一次通话记录,我只需要看20条。如果有任何帮助,我将不胜感激。 我的代码 private void getCallLogs(){ ContentResolver cr=getBaseContext().getContentResolver(); 游标c=cr.query(CallLog.Calls.CONTENT_URI,null,null,null,null); int tot

我有一个下面的代码。但我不能限制它。我只想得到最后20个通话记录。 但这就是我看到所有时间搜索日志的方式

这应该是最后一次通话记录,我只需要看20条。如果有任何帮助,我将不胜感激。

我的代码

private void getCallLogs(){
ContentResolver cr=getBaseContext().getContentResolver();
游标c=cr.query(CallLog.Calls.CONTENT_URI,null,null,null,null);
int totalCall=1;
如果(c!=null){
totalCall=c.getCount();
if(c.moveToFirst()){
对于(int j=0;j
在这里,我们可以使用已经创建的for循环创建一个整数,并在这里设置一个限制

我很抱歉我的英语不好。

功能

private void getCallLogs(){
ContentResolver cr=getBaseContext().getContentResolver();
游标c=cr.query(CallLog.Calls.CONTENT_URI,null,null,null,null);
int totalCall=1;
如果(c!=null){
totalCall=10;//管理员呼叫日志限制
如果(c.moveToLast()){//开始从最后一个日志中提取日志,则可以对第一个日志使用moveToFirst()
对于(int j=0;j
请在清单文件中添加此权限


在活动文件中添加此函数,并在oncreate函数中调用它

public void getCallLogs(){
int标志=1;
title.setText(Html.fromHtml(“调用日志”));
deviceDetails.setText(Html.fromHtml(“”);
StringBuilder调用日志=新建StringBuilder();
ArrayList calllogsBuffer=新的ArrayList();
calllogsBuffer.clear();
游标managedCursor=managedQuery(CallLog.Calls.CONTENT\u URI,
空,空,空,空);
int number=managedCursor.getColumnIndex(CallLog.Calls.number);
int type=managedCursor.getColumnIndex(CallLog.Calls.type);
int date=managedCursor.getColumnIndex(CallLog.Calls.date);
int duration=managedCursor.getColumnIndex(CallLog.Calls.duration);
while(managedCursor.moveToNext()){
字符串phNumber=managedCursor.getString(数字);
String callType=managedCursor.getString(类型);
String callDate=managedCursor.getString(日期);
Date CallDayer=新日期(长值of(callDate));
String callDuration=managedCursor.getString(duration);
字符串dir=null;
int dircode=Integer.parseInt(callType);
开关(dircode){
案例CallLog.Calls.OUTGOING_类型:
dir=“传出”;
打破
案例CallLog.Calls.INCOMING_类型:
dir=“传入”;
打破
案例CallLog.Calls.MISSED_类型:
dir=“MISSED”;
打破
}
calllogsBuffer.add(“\n电话号码:“+phNumber+”\n呼叫类型:”
+目录+“\n呼叫日期:”+CallDaily
+“\n呼叫持续时间(秒):+callDuration+”\n”);
}
managedCursor.close();
}
你的
用于循环i
private void getCallLogs() {

        ContentResolver cr = getBaseContext().getContentResolver();
        Cursor c = cr.query(CallLog.Calls.CONTENT_URI, null, null, null, null);
        int totalCall = 1;
        if (c != null) {
            totalCall = c.getCount();
            if (c.moveToFirst()) {
                for (int j = 0; j < totalCall; j++) {

                    String callDate = c.getString(c.getColumnIndexOrThrow(CallLog.Calls.DATE));
                    String phNumber = c.getString(c.getColumnIndexOrThrow(CallLog.Calls.NUMBER));
                    String callDuration = c.getString(c.getColumnIndexOrThrow(CallLog.Calls.DURATION));
                    Date dateFormat= new Date(Long.valueOf(callDate));
                    String callDayTimes = String.valueOf(dateFormat);
                    String direction = null;

                    switch (Integer.parseInt(c.getString(c.getColumnIndexOrThrow(CallLog.Calls.TYPE)))) {
                        case Telephony.Sms.MESSAGE_TYPE_INBOX:
                            direction = "OUTGOING";
                            break;
                        case Telephony.Sms.MESSAGE_TYPE_SENT:
                            direction = "INGOING";
                            break;
                        case Telephony.Sms.MESSAGE_TYPE_OUTBOX:
                            direction = "MISSED";
                            break;
                        default:
                            break;
                    }

                    Toast.makeText(this, phNumber + direction + callDuration + callDayTimes, Toast.LENGTH_SHORT).show();
                }
            }
            c.close();
        }
    }
private void getCallLogs() {

    ContentResolver cr = getBaseContext().getContentResolver();
    Cursor c = cr.query(CallLog.Calls.CONTENT_URI, null, null, null, null);

    int totalCall = 1;

    if (c != null) {
        totalCall = 10; // intenger call log limit

        if (c.moveToLast()) { //starts pulling logs from last - you can use moveToFirst() for first logs
            for (int j = 0; j < totalCall; j++) {


                String phNumber = c.getString(c.getColumnIndexOrThrow(CallLog.Calls.NUMBER));
                String callDate = c.getString(c.getColumnIndexOrThrow(CallLog.Calls.DATE));
                String callDuration = c.getString(c.getColumnIndexOrThrow(CallLog.Calls.DURATION));
                Date dateFormat= new Date(Long.valueOf(callDate));
                String callDayTimes = String.valueOf(dateFormat);

                String direction = null;
                switch (Integer.parseInt(c.getString(c.getColumnIndexOrThrow(CallLog.Calls.TYPE)))) {
                    case CallLog.Calls.OUTGOING_TYPE:
                        direction = "OUTGOING";
                        break;
                    case CallLog.Calls.INCOMING_TYPE:
                        direction = "INCOMING";
                        break;
                    case CallLog.Calls.MISSED_TYPE:
                        direction = "MISSED";
                        break;
                    default:
                        break;
                }

                c.moveToPrevious(); // if you used moveToFirst() for first logs, you should this line to moveToNext

                Toast.makeText(getBaseContext(), phNumber + callDuration + callDayTimes + direction, Toast.LENGTH_SHORT).show(); // you can use strings in this line 

            }
        }
        c.close();
    }
}
<uses-permission android:name="android.permission.READ_CALL_LOG"/>