首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得最近拨的号码

如何获得最近拨的号码
EN

Stack Overflow用户
提问于 2012-11-17 11:48:00
回答 2查看 3K关注 0票数 3

我正在处理一个应用程序,在那里我需要获取5个最近拨号的号码。我能够按降序对数字进行排序,所以最近拨的号码排在第一位。我使用下面的代码来获取最近的数字。

代码语言:javascript
复制
dialledCall = (TextView)findViewById(R.id.dialledCall);

              String strOrder = CallLog.Calls.DATE + " DESC";
              Cursor mCallCursor = getApplicationContext().getContentResolver().query(CallLog.Calls.CONTENT_URI,
                      null,
                      CallLog.Calls.TYPE 
                      ,null,
                      strOrder);
              mCallCursor.moveToFirst();
              do {
                  if( i >5 )
                      break;
                  mobileNumber =   mCallCursor.getString(mCallCursor.getColumnIndex(android.provider.CallLog.Calls.NUMBER));
              number += mobileNumber + "\n";

              i++;
              }
              while (mCallCursor.moveToNext());
         dialledCall.setText(number);

有了这个,我可以按最近的顺序对数字进行排序,而且我刚刚得到了最后的5个数字。但是查询返回所有的号码,我指的是拨号,错过和接收。但在这里我只想要拨的号码。

我知道在上面的查询中有一些与CallLog.Calls.TYPE有关的内容。

我尝试过传递null值,但是它返回所有的数字。

我也尝试过用CallLog.Calls.OUTGOING_TYPE代替它,但是它会导致不允许int值的错误,它应该是一个字符串值。

任何关于如何替换上述代码的建议,以便只接到拨号电话。

Note-我已经看过https://stackoverflow.com/a/10480569/1626878,但它并没有提供只获取拨号号码的解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-13 08:24:23

我已经解决了这个问题,所以我把它张贴给未来的访客。

代码语言:javascript
复制
    String mobileNumber="";
    int i = 1;
    String number = "";
    TextView dialledCall;
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            dialledCall = (TextView)findViewById(R.id.dialledCall);

    //              String[] strFields = { android.provider.CallLog.Calls.NUMBER, android.provider.CallLog.Calls.TYPE, android.provider.CallLog.Calls.CACHED_NAME,         android.provider.CallLog.Calls.CACHED_NUMBER_TYPE, android.provider.CallLog.Calls.DURATION     };
                  String strOrder = CallLog.Calls.DATE + " DESC";
                  Cursor mCallCursor = getApplicationContext().getContentResolver().query(CallLog.Calls.CONTENT_URI,
                          null,
                          CallLog.Calls.TYPE + " = " + CallLog.Calls.OUTGOING_TYPE
                          ,null,
                          strOrder);
                  mCallCursor.moveToFirst();
                  do {
                      if( i >5 )
                          break;
                      mobileNumber =   mCallCursor.getString(mCallCursor.getColumnIndex(android.provider.CallLog.Calls.NUMBER));
                  number += mobileNumber + "\n";

                  i++;
                  }
                  while (mCallCursor.moveToNext());
             dialledCall.setText(number);
        }

在这里,查询中的CallLog.Calls.TYPE + " = " + CallLog.Calls.OUTGOING_TYPE将拨号呼叫分开。

票数 1
EN

Stack Overflow用户

发布于 2012-11-17 11:58:11

您可以使用CallLog类获取这些信息(参见http://developer.android.com/reference/android/provider/CallLog.Calls.html)。

您对getLastOutgoingCall方法感兴趣,它返回最后一个电话号码。

查一下通话记录。你可以很容易地访问这个。做一些类似的事情,

定义,公开Cursor mCallCursor

然后定义要从调用日志中获取的字段,

代码语言:javascript
复制
public static final String[] STR_FIELDS = {
        android.provider.CallLog.Calls.NUMBER, 
        android.provider.CallLog.Calls.TYPE,
        android.provider.CallLog.Calls.CACHED_NAME,
        android.provider.CallLog.Calls.CACHED_NUMBER_TYPE,
        android.provider.CallLog.Calls.DATE,
        android.provider.CallLog.Calls.DURATION, android.provider.CallLog.Calls.CACHED_NUMBER_LABEL,android.provider.CallLog.Calls.NUMBER
        };

设置顺序,公共静态最终字符串STR_ORDER = android.provider.CallLog.Calls.DATE +“DESC";

调用光标。

代码语言:javascript
复制
mCallCursor = getContentResolver().query(
            android.provider.CallLog.Calls.CONTENT_URI,
            STR_FIELDS,
            null,
            null,
            STR_ORDER);     
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13430246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档