昨天看视频,一个拨号app。intent用的ACTION_CALL
视频演示挺正常,但是我这一点击就闪退。
网上查了半天,从系统和api版本,到配置文件都不行。
今天用ACTION_DIAL能正常切换到拨号页面,但CALL还是闪退。
在网上搜,原来是安卓6以后需要动态申请权限。
昨天解决问题没有方向,都是瞎碰。
以后出现bug时,用相近的方法,比如ACTION_CALL不行用ACTION_DIAL试试。
动态权限申请
1 字符串数组 添加权限
String[] permissions = new String[]{
Manifest.permission.CALL_PHONE,
Manifest.permission.SEND_SMS,
Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.RECORD_AUDIO
};
2 检测是否授予权限
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.RECORD_AUDIO) !=
PackageManager.PERMISSION_GRANTED)
PackageManager.PERMISSION_GRANTED 是系统值 = 0,不等于0就是没有授予。
3 申请权限
ActivityCompat.requestPermissions(MainActivity.this, permissions ,1);
permissions这个是字符串数组,见1。