android基础--拨打电话两种方式

时间:2022-11-10 00:26:14

android基础--拨打电话两种方式


1.  首先在AndroidMenifest文件里加上这个权限:

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


2. 实现方式

     第一种方式:

Intent intent = new Intent(Intent.ACTION_DIAL);
Uri data = Uri.parse("tel:" + "1872172xxxx");
intent.setData(data);
startActivity(intent);

这种方式的特点就是,去到了拨号界面,但是实际的拨号是由用户点击实现的。


    第二种方式:

Intent intent = new Intent(Intent.ACTION_CALL);
Uri data = Uri.parse("tel:" + "1872172....");
intent.setData(data);
startActivity(intent);

这种方式的特点就是,直接拨打了你所输入的号码,所以这种方式对于用户没有直接的提示效果,Android推荐使用第一种方式,如果是第二种的话,建议在之前加一个提示,是否拨打号码,然后确定后再拨打。


3.  异常现象

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.DIAL dat=15026536236 }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1792)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1512)
at android.app.Activity.startActivityForResult(Activity.java:3810)
at android.app.Activity.startActivityForResult(Activity.java:3761)
at android.app.Activity.startActivity(Activity.java:4091)
at android.app.Activity.startActivity(Activity.java:4059)
提示类找不到,出现此问题时候,要回去查找
Intent intent = new Intent(Intent.ACTION_CALL);
Uri data = Uri.parse("tel:" + "1872172....");
这部分是否正确写法,否则就会报错。。


我出错的代码是

Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:"+ phone != null ? phone : tel));
导致此异常,,

也有的人 会忘了写  uri.parse() 中的 tel :  ,这些都不能忽略..

 请大家记住..代码规范。