sta*_*ust 11 android phone-call
我可以通过以下代码拨打一般电话号码:
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse("tel:" + phoneNumber));
startActivity(intent);  
在清单文件中,我添加如下权限:
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.CALL_PRIVILEGED"/>
正如android的doc解释CALL_PRIVILEGED这样:允许应用程序拨打任何电话号码,包括紧急号码,而无需通过Dialer用户界面让用户确认正在拨打的电话.不供第三方应用程序使用.
我的应用程序位于软件包/应用程序中,因此它不是第三方应用程序,对吧?那么,为什么每次拨打"112"这样的紧急号码时,我仍然直接拨打拨号盘而不是拨号用户界面?
提供的代码应该已经适用于此,但您需要CALL_PHONE并且CALL_PRIVILEGED允许拨打紧急号码而不显示拨号盘.
Android参考 - 清单权限CALL_PRIVILEGED
一旦将其添加到清单中,您应该能够使用相同的代码来ACTION_CALL代替直接拨号:
Uri callUri = Uri.parse("tel://911");
Intent callIntent = new Intent(Intent.ACTION_CALL,callUri);
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NO_USER_ACTION);
startActivity(callIntent);
试试这个
如果你使用Action_Dial那么它会打开dialpad直接Action_Call将call直接在指定的号码.
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse("tel:" + "198"));
startActivity(intent);
添加权限  <uses-permission android:name="android.permission.CALL_PHONE" />
注意:经过测试
Marshmallow)Lollipop)Kitkat 4.1.2)使用Action_Dial因为Action_Dial将直接打开拨号盘并Action_Call直接拨打指定的号码。
注意: Intent 不能用于拨打紧急号码。应用程序可以使用拨打紧急号码ACTION_DIAL。
您需要获得CALL_PHONE和CALL_PRIVILEGED权限才能在不显示拨号盘的情况下拨打紧急号码。  
添加权限后,请尝试使用以下代码ACTION_CALL来代替直接拨号:
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NO_USER_ACTION);
 callIntent.setData(Uri.parse("tel:" + phoneNumber));
startActivity(callIntent);
Android 参考 - 清单权限 CALL_PRIVILEGED
| 归档时间: | 
 | 
| 查看次数: | 7447 次 | 
| 最近记录: |