如何让拨号程序显示电话号码?
我不需要拨打电话号码,我只需要拨号器打开已显示的电话号码。 我应该用什么Intent
来达到这个目的?
两种方式来实现它。
1)必须通过代码启动拨号器,无需用户交互。
你需要Action_Dial
,
使用下面的代码,它将打开指定编号的拨号程序
Intent intent = new Intent(Intent.ACTION_DIAL); intent.setData(Uri.parse("tel:0123456789")); startActivity(intent);
“tel:”前缀是必需的 ,否则会抛出以下exception: java.lang.IllegalStateException:无法执行活动的方法。
Action_Dial不需要任何权限。
如果您想在没有用户交互的情况下直接启动调用 ,则可以使用Intent.ACTION_CALL
动作。 在这种情况下,您必须在AndroidManifest.xml中添加以下权限:
<uses-permission android:name="android.permission.CALL_PHONE" />
2)让用户点击Phone_Numberstring并开始通话。
android:autoLink="phone"
你需要使用下面的属性TextView。
android:autoLink =“phone”android:linksClickable =“true”一个textView属性
你不需要使用意图或通过这种方式获得许可。
答案很晚,但如果你有一个TextView
,你显示的电话号码,那么你根本不需要处理意图,你可以使用XML属性android:autoLink="phone"
和操作系统将自动启动一个ACTION_DIAL
意图。
就像上面提到的@ashishduh一样,使用android:autoLink="phone
也是一个很好的解决scheme,但是这个选项有一个缺点,它不适用于所有的电话号码长度,例如11个电话号码使用这个选项。解决办法是在你的电话号码前加上国家代码。
例:
08034448845
将无法正常工作
但是+2348034448845
会
<TextView android:id="@+id/phoneNumber" android:autoLink="phone" android:linksClickable="true" android:text="+91 22 2222 2222" />
这就是如何直接在拨号器上打开EditText标签分配号码。