如何在android中拨打各自名称的电话号码

时间:2014-03-11 19:52:02

标签: android telephonymanager

尝试使用姓名拨打电话号码。可以通过电话号码拨打姓名。

我成功调用了以下代码:

 Intent callIntentp2 = new Intent(Intent.ACTION_CALL);
 callIntentp2.setData(Uri.parse("tel: 55555555");
 startActivity(callIntentp2);

它的输出看起来像

55555555 Dialing

但是我想用名字打电话,就像你在SIM卡上的联系人列表中保存一样。但我手动输入的数据不是来自SIM卡。

John 55555555 Dialing

这可能。

1 个答案:

答案 0 :(得分:2)

ACTION_CALL是原生的Android意图。当您调用它时,Android会执行后台进程以显示默认的呼叫视图。有些方法可以将一些广播接收器组合在一起,以覆盖原生呼叫屏幕上的活动,但是你要在这方面遇到麻烦。没有root设备,这是一个艰难的过程。这个问题实际上非常类似于:

Replace native outgoing call Screen by custom screen android

我还没有读过这个链接或任何内容,但我很确定他们会说同样的话。如果没有做一些奇怪的事情,那么你无法解决这个问题。

您可以(理论上)在呼叫之前花些时间将附有姓名的号码添加到您的联系人列表中。进行呼叫时,它将显示姓名和号码(因为该名称被列为联系人,这是Android的默认操作)。完成通话后,您可以删除该联系人,以便它不会卡在不需要它的人员联系人列表中。

例如一些代码:

ContentValues contactValues = new ContentValues();
        contactValues.put(Data.RAW_CONTACT_ID, 001);
        contactValues.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
        contactValues.put(Phone.NUMBER, "555-555-5555");
        contactValues.put(Phone.TYPE, Phone.TYPE_CUSTOM);
        contactValues.put(Phone.LABEL, "John");
        Uri dataUri = getContentResolver().insert(
             android.provider.ContactsContract.Data.CONTENT_URI, contactValues);

不要忘记为您的应用程序清单添加写入联系人权限。再一次,这只是一个选项(我唯一能想到的唯一一个选项)