我有以下代码,我从对话框片段按钮开始:
uri = "tel:"+ServerDialogCallUs.this.contents.getString("phone_number");
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse(uri));
此代码不是拨打普通电话,而是启动Skype电话。如何为用户提供在普通呼叫和Skype呼叫之间进行选择的选项。 感谢
答案 0 :(得分:18)
<uses-permission android:name="android.permission.CALL_PHONE" />
将此权限添加到清单后,我可以在普通和Skype调用之间进行选择。 感谢
答案 1 :(得分:4)
尝试调用setPackage()方法,工作正常:
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setPackage("com.android.phone");
intent.setData(Uri.parse("tel:" + number));
startActitivy(intent);
答案 2 :(得分:2)
有同样的问题并尝试了一些答案:
2.1。 Uri.encode(&#34;#&#34;)不是解决方案,只是增加了一个&#34; 23&#34;电话号码
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");
取决于设备或至少不会离开&#34;电话&#34;包含在我的设备上。
答案 3 :(得分:0)
那是因为
在后一种情况下,请转到设置,应用,Skype,并删除应用详细信息屏幕底部的关联。
答案 4 :(得分:0)
您的手机可能已将Skype作为默认应用来处理Intent.ACTION_CALL
答案 5 :(得分:0)
请尝试以下代码:
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..."));