我使用以下许可从我的应用程序拨打电话
< uses-permission android:name="android.permission.CALL_PHONE" />
这是我打电话的代码。
Intent iniCall=new Intent(Intent.ACTION_CALL);
iniCall.setData(Uri.parse("tel:9849199291");
startActivity(iniCall);
但它启动Skype应用程序而不是启动默认呼叫应用程序。
如何从默认呼叫应用程序调用?
答案 0 :(得分:11)
对于Pre-Lollipop
设备,您需要使用com.android.phone
作为软件包名称,而在Lollipop
中,您需要使用com.android.server.telecom
作为软件包名称。
试试这段代码:
Intent iniCall=new Intent(Intent.ACTION_CALL);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
iniCall.setPackage("com.android.server.telecom");
}else{
iniCall.setPackage("com.android.phone");
}
iniCall.setData(Uri.parse("tel:"+9849199291);
startActivity(iniCall);
我希望它有所帮助!
答案 1 :(得分:1)
主要活动代码:
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String phnum = edittext.getText().toString();
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:" + phnum));
startActivity(callIntent);
}
});
清单:
<uses-permission android:name="android.permission.CALL_PHONE" />
答案 2 :(得分:0)
我个人更喜欢不需要许可的方法,但确实要求用户按下拨号盘,如下所示:
Uri uri = Uri.parse("tel:" + number);
Intent callIntent = new Intent(Intent.ACTION_DIAL, uri);
context.startActivity(callIntent);
答案 3 :(得分:-2)
我知道这是个愚蠢的问题,但该设备有SIM卡吗?它应该启动“call”事件的默认应用程序,可以在“设置”中设置。所以有两种选择: