【问题标题】:How to launch dialer with primary contact number?如何使用主要联系人号码启动拨号器?
【发布时间】:2011-01-20 14:14:06
【问题描述】:

谁能帮我实现以下目标,

鉴于在之前的活动中已经通过“ACTION_PICK”获得的联系人的 Uri,我想启动一个 ACTION_DIAL 意图来呼叫该联系人。

虽然不知道该怎么做,我是否首先需要查询以找到与联系人关联的主要号码,还是有更简单的方法?我希望我可以使用联系人的 Uri 启动 ACTION_DIAL,它会自己弄清楚要做什么,但这不起作用。

我们一如既往地感谢您的建议。

PS 此代码适用于 Froyo 及更高版本,因此使用 ContactsContract 而不是旧版本。

谢谢,

【问题讨论】:

    标签: android android-contacts


    【解决方案1】:

    为了他人的利益,使用从 ACTION_PICK 意图获得的联系人的 URI 启动 ACTION_DIAL/ACTION_CALL 意图不起作用。这是一个无效的参数。

    所以我不得不通过几个查询来确定联系人的电话号码。我也只寻找“主要”电话。

    我执行任务的代码如下,也许我不需要执行初始查询来获取 ID,因为我已经有了 URI,但我还没有找到替代方案,所以如果有人可以提出其他建议请告诉我:-),

    // passing in String uri - obtained via contacts based ACTION_PICK 
            String contactId = null;
            Cursor contactCursor =  callingActivity.managedQuery(Uri.parse(uri), null, null, null, null); 
            if (contactCursor.moveToFirst())
            {
                contactId =
                    contactCursor.getString(contactCursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
            } 
    
            Cursor c = callingActivity.managedQuery(Data.CONTENT_URI,
              new String[] {Data._ID, Phone.NUMBER, Phone.TYPE, Phone.LABEL},
              Data.CONTACT_ID + "=?" + " AND "
                      + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE
                      + "' AND " + Phone.IS_PRIMARY + " != 0",
              new String[] {contactId}, null);
    
    
            if (c.moveToNext()) {
                result = c.getString(c.getColumnIndexOrThrow(Phone.NUMBER));
                if (DEBUG) Log.d(TAG, "GOT PHONE : "+c.getString(c.getColumnIndexOrThrow(Phone.NUMBER)) + ","
                        +c.getString(c.getColumnIndexOrThrow(Phone.LABEL)) + ","
                        +c.getString(c.getColumnIndexOrThrow(Phone.TYPE)));
            }
    

    www.dbws.net

    【讨论】:

      【解决方案2】:

      它会帮助你,

      Intent myintent = new Intent(Intent.ACTION_CALL); 
                  Log.v("phno",""+phNo);
                 myintent.setData(Uri.parse("tel:" +phNo ));  
                 myintent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                 startActivity(myintent);
      

      【讨论】:

      • 嗨,谢谢,但我还没有电话号码,目前只有联系人的 Uri
      【解决方案3】:

      别忘了添加

      <uses-permission android:name="android.permission.CALL_PHONE" />
      

      在清单文件中

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-03
        • 2019-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多