[Android][M0][Call] 拨打电话

我的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 里面声明电话权限是不够的,还必须在调用代码前添加权限检测,就像上面那样。

你可能感兴趣的:([Android][M0][Call] 拨打电话)