只从输入中获取数字并拨打该号码Android

时间:2014-12-16 12:48:56

标签: java android numbers

好的,我正在创建一个Android应用程序,我确实想从这里的输入中获取数字mostLikelyThingHeard我的代码因某些原因无法正常工作。

例如,当用户说:bel 0612345678

拨号器必须拨打0612345678

String one = "bel";
if (mostLikelyThingHeard.contains(one)) {
    String numbers = mostLikelyThingHeard.replaceAll("[^0-9]", "");
    Intent call = new Intent(Intent.ACTION_DIAL);
    call.setData(Uri.parse("tel:" + numbers));
    tts.speak(numbers + " wordt gebeld.",
    TextToSpeech.QUEUE_FLUSH, null);
    found = true;
}

我还在AndroidManifest.xml中添加了正确的权限,我想代码是错误的。

5 个答案:

答案 0 :(得分:0)

你能试试吗

Intent.ACTION_CALL

并确保您在清单文件

中的应用程序标记之前使用此标记
<uses-permission android:name="android.permission.CALL_PHONE" />

答案 1 :(得分:0)

您可以使用正则表达式并删除非数字。

str = str.replaceAll("\\D+","");

答案 2 :(得分:0)

试试这个......

   Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + yours_numbers_values));
   startActivity(intent);

答案 3 :(得分:0)

您需要从String中获取数字:

String numbers = mostLikelyThingHeard.replaceAll("[^\\d]", "");

要拨打该号码,您可以使用ACTION_CALL。 ACTION_DIAL将只打开一个带有该号码的拨号屏幕。此外,您已初始化意图,但您缺少对startActivity(intent)的呼叫

Intent call = new Intent(Intent.ACTION_DIAL);
call.setData(Uri.parse("tel:" + numbers));
startActivity(call);

希望这有帮助。

答案 4 :(得分:0)

    String one = "bel";
String mostLikelyThingHeard="bel 0612345678";
if (mostLikelyThingHeard.contains(one)) {
    String numbers = mostLikelyThingHeard.replaceAll("[^0-9]", "");
    Intent callIntent = new Intent(Intent.ACTION_CALL);
    callIntent.setData(Uri.parse("tel:"+Uri.encode(numbers.trim())));
    startActivity(callIntent);
    tts.speak(numbers + " wordt gebeld.",
    TextToSpeech.QUEUE_FLUSH, null);
    found = true;
}

在Manifest中添加权限

<uses-permission android:name="android.permission.CALL_PHONE" ></uses-permission>