我的OSC地址:[Android][M0][Call] 拨打电话
下面的代码基于 Api23 编译,并使用 荣耀6 Android 6.0 系统测试 OK。
一、调用系统拨号界面
例如:拨打 10086
Uri phoneUri = Uri.parse("tel:10086");
Intent intent = new Intent(Intent.ACTION_DIAL, phoneUri);
startActivity(intent);
特点:
1、不需要电话权限:android.permission.CALL_PHONE。
2、而且在拨出去之前还可以确认号码的正确性,以及是否真的要拨出去。
3、会在通话记录里面生成新纪录。
二、直接拨打电话
例如:拨打 10086
Uri phoneUri = Uri.parse("tel:10086");
Intent intent = new Intent(Intent.ACTION_CALL, phoneUri);
///检查权限
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
Log.e("Shawn", "call: 没有权限");
return;
}
startActivity(intent);
特点:
1、需要电话权限:android.permission.CALL_PHONE。
2、不需要跳转任何界面,直接就能拨出去。
3、会在通话记录里面生成新纪录。
但自6.0开始加入了动态权限机制,仅仅只在 AndroidManifest.xml 里面声明电话权限是不够的,还必须在调用代码前添加权限检测,就像上面那样。
网友评论