我测试了一个有效的东西......
您必须检测电话号码是否为紧急号码(它们是在SIM卡中编码的),然后在号码的末尾添加“”,如果是的话 . 我测试了其他标志或数字,它没有工作(呼叫已完成,但它没有达到服务) .
我把她的代码从Orasi(一个视障人士的软件)中提取出来:
// Lance un appel
public static void CallNumber(Activity activity, String szNumber) {
Intent intent = new Intent(Intent.ACTION_CALL);
if(PhoneNumberUtils.isEmergencyNumber(szNumber)) {
szNumber += "+";
}
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NO_USER_ACTION);
intent.setData(GetUriForCall(szNumber));
activity.startActivity(intent);
}
GetUriForCall对标志进行编码 . 我还把代码放在这里:
// Retourne une URI pour appel téléphonique, avec adaptation encodage caratères
public static Uri GetUriForCall(String szNumber) {
String szOutNumber = szNumber.replace("*", Uri.encode("*")).replace("#",Uri.encode("#"));
return Uri.parse("tel:" + szOutNumber);
}
我在法国,我用'112'测试,这被视为紧急号码 . 有用 !
请注意,通常的紧急情况编号,即15(SAMU),18(消防部门)和17(警察)不被SIM卡视为紧急情况编号,并且作为正常编号工作 . 此外,911被视为一个,即使你不能在这里打电话给这个号码的人......
所以我认为在添加''之前测试数字很重要 . 另请注意,我编码'*'和'#',而不是'',因此它可以解释为什么这不适用于这些符号 .
希望这可以帮助