我想通过申请拨打电话 是否可以将选项限制为仅从内置电话应用程序调用,而不是将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)));
我想看起来像这样:
而不是这样(如果我安装了Viber和Skype):
我尝试使用此代码:
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作为选择我也不知道为什么?
答案 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网络是否可用。