【问题标题】:Android code to dial or calll a string containing alphabets *123*abc# instead of numbers (*123#)?Android代码拨打或呼叫包含字母* 123 * abc#而不是数字(* 123#)的字符串?
【发布时间】:2016-10-14 13:29:16
【问题描述】:

我无法在 android 中拨打或呼叫包含字母的字符串。

例如: 我想拨一个字符串*123*abcd#。

Intent callIntent = new Intent(Intent.ACTION_CALL);
                callIntent.setData(Uri.parse("tel:"+"*123*abcd#")); //This string is not getting dialed 
                try
                {

                    startActivity(callIntent);
                }
                catch (android.content.ActivityNotFoundException ex)
{
                    Toast.makeText(getApplicationContext(),"yourActivity is not founded",Toast.LENGTH_SHORT).show();
                }

字符串 *123*abcd# 没有被拨打或呼叫。请帮助解决同样的问题。

【问题讨论】:

  • 你是否添加了这个权限
  • 嗨艾哈迈德,是的,我已经添加了清单文件的权限。
  • 是的,我添加了相同的。这不能解决我的问题

标签: java android


【解决方案1】:
String s = "*123*abcd#";
if ((s.startsWith("*")) && (s.endsWith("#"))) {
    callstring = s.substring(0, s.length() - 1);
    callstring = callstring + Uri.encode("#");
} 
Intent i = new Intent(android.content.Intent.ACTION_CALL, Uri.parse("tel:" + callstring));
startActivity(i);

您需要在使用上面的代码之前对 # 进行编码。

【讨论】:

  • @DäñishShärmà 很高兴它有所帮助。请接受答案:)
  • 我没有问这个问题。我试图找到#Gurpreet 的解决方案。
  • @DäñishShärmà 对不起我的错误
  • 你来自卢迪亚纳。 Java公司存在那里?我在 mohali 工作,即使这里没有更多的 java 机会
  • @DäñishShärmà 卢迪亚纳有一两家公司从事 java 业务。 :) 不多
【解决方案2】:

要使用 Intent.ACTION_CALL 你需要添加权限 <uses-permission android:name="android.permission.CALL_PHONE"/> 并且因为它是一个危险的权限,所以你需要处理它 Runtime for Android 6 及更高版本。

您可以使用 Intent.ACTION_DIAL,它不需要任何权限,并且会打开已输入给定号码的电话应用程序,用户必须发起呼叫。

这里是如何实现这一点。

Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:*123*abcd#"));
startActivity(intent);

【讨论】:

  • 这并不能解决问题,因为它只会拨打 123 作为 abcd 并且 # 将被省略。有什么方法可以让手机从应用中拨入 abcd
猜你喜欢
  • 1970-01-01
  • 2010-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-06
  • 2022-01-04
  • 1970-01-01
相关资源
最近更新 更多