项目在小米6.0上面运行时,使用打电话和获取相册的功能时崩溃了,但在AndroidManifest.xml中声明了相关权限
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
1.申请权限
private static final int MY_PERMISSIONS_REQUEST_CALL = 1;
private void requestCallPermission(){
//检测某个权限是否已经被授予
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.CALL_PHONE)
!= PackageManager.PERMISSION_GRANTED)
{
//申请权限
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.CALL_PHONE},
MY_PERMISSIONS_REQUEST_CALL);
}
}
遇到问题:项目使用eclipse,报错:找不到方法checkSelfPermission和requestPermissions,更新support-v4包即可。
2.回调处理
//回调处理授权结果
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
{
if (grantResults!=null&&grantResults.length>0)
{
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_CALL:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
//执行打电话的操作
}
break;
default:
break;
}
return;
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
3.使用
在需要打电话操作前请求权限
/**
* 判断是否为6.0及其以上系统
*/
if(Build.VERSION.SDK_INT >= 23){
requestCallPermission();
}
详细介绍http://blog.csdn.net/hudashi/article/details/50775180