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 : ,这些都不能忽略..
请大家记住..代码规范。