我有以下代码,我从对话框片段按钮开始:
uri = "tel:"+ServerDialogCallUs.this.contents.getString("phone_number");
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse(uri));
此代码不会拨打普通电话,而是启动 Skype 通话。如何让用户选择在正常通话和 Skype 通话之间进行选择。谢谢
我有以下代码,我从对话框片段按钮开始:
uri = "tel:"+ServerDialogCallUs.this.contents.getString("phone_number");
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse(uri));
此代码不会拨打普通电话,而是启动 Skype 通话。如何让用户选择在正常通话和 Skype 通话之间进行选择。谢谢
实际上,我错过了许可:
<uses-permission android:name="android.permission.CALL_PHONE" />
将此权限添加到清单后,我可以在普通呼叫和 Skype 呼叫之间进行选择。谢谢
尝试调用 setPackage() 方法,工作正常:
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setPackage("com.android.phone");
intent.setData(Uri.parse("tel:" + number));
startActitivy(intent);
有同样的问题并尝试了一些答案:
2.1。Uri.encode("#") 不是解决方案,它只是在电话号码上添加一个“23”
2.2. Skype 处理号码错误,它添加了 +001 之类的国家代码。所以 Skype 不能正确处理 USSD。但似乎,我没有机会排除这一点。
所以我做了:
final Intent intent = new Intent();
intent.setAction(Intent.ACTION_DIAL);
intent.setData(Uri.fromParts("tel", "123456", null));
startActivity(Intent.createChooser(intent, ""), REQUEST_CODE));
在我看来,我的观点是
intent.setPackage("com.android.phone");
取决于设备或至少不会在我的设备上留下“电话”。
那是因为
在后一种情况下,转到设置、应用程序、Skype,然后在应用程序详细信息屏幕的底部删除该关联。
您的手机可能将 Skype 作为默认应用程序来处理Intent.ACTION_CALL
试试下面的代码:
uri = "tel:"+ServerDialogCallUs.this.contents.getString("phone_number");
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse(uri));
startActivity(Intent.createChooser(intent, "Call Using..."));