使用内置电话拨号器开始通话

时间:2016-02-28 15:41:34

标签: android phone-call

我想通过申请拨打电话 是否可以将选项限制为仅从内置电话应用程序调用,而不是将Viber,Skype或Whatsapp显示为选项?

这是我的代码:

        Intent i = new Intent(Intent.ACTION_DIAL);
        i.setData(Uri.parse("tel:"+ adapter.getItem(position).getContent()));
        startActivity(Intent.createChooser(i, getString(R.string.call_number)));

我想看起来像这样:

enter image description here

而不是这样(如果我安装了Viber和Skype):

enter image description here

我尝试使用此代码:

public static Intent callfromDefaultDialer(Context ctxt, String no) {

    Intent i = new Intent();
    i.setAction(Intent.ACTION_CALL);
    i.setData(Uri.parse("tel:" + no));
    PackageManager pm = ctxt.getPackageManager();
    List<ResolveInfo> list = pm.queryIntentActivities(i, 0);
    for (ResolveInfo info : list) {
        String pkgnam = info.activityInfo.packageName;
        if (pkgnam.toLowerCase().equals("com.android.phone")) {
            i.setClassName(pkgnam, info.activityInfo.name);
            return i;
        }
    }

    return i;
}

这会打开Skype作为选择我也不知道为什么?

1 个答案:

答案 0 :(得分:0)

您可以使用ACTION_CALL Intent标志

 Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phone));
 startActivity(intent);

但这不再是正确的选择。

您需要在清单中要求直接电话访问权限。

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

如果您只使用这两行代码,您将拥有拨号器,而不是Skype。

不要创建选择器,只需直接使用默认拨号器意图。

同时检查手机中的默认电话拨号器应用程序,这是Skype吗?

此外,您还要检查GSM网络是否可用。