android - api23下报错“Call requires permission which may be rejected by user”

查看:1754
本文介绍了android - api23下报错“Call requires permission which may be rejected by user”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

菜鸟求教如何解决在api23下编译出现的permission问题。

报错原代码如下

    button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Intent.ACTION_CALL);
            intent.setData(Uri.parse("tel:10086"));
            startActivity(intent);
        }
 
    

startActivity(intent) 那出现错误提示: Call requires permission which may be rejected by user
stackoverflow上查到是使用api23编译后出现的permission问题,并给出了解决代码。

if (mContext.checkSelfPermission(Manifest.permission.CALL_PHONE) == 

    PackageManager.PERMISSION_GRANTED) {
        Intent callIntent = new Intent(Intent.ACTION_CALL);
        callIntent.setData(Uri.parse("tel:" + phoneNumber));
        callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(callIntent);
    }
    

只是不太明白上述的代码如何修改后添加到MainActivity.....直接copy过去mContext会报错...求教应该怎么改呢?
如果代码修改成功后可以在6.0上运行,如何使应用在6.0以下正常运行呢?

解决方案

mContext是上下文对象,在你的MainActivity中即是MainActivity.this。做版本判断

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    if(MainActivity.this.checkSelfPermission(Manifest.permission.CALL_PHONE)==PackageManager.PERMISSION_GRANTED) {
        callPhone();
    }else{
        //
    }
}else{
    callPhone();
}
void callPhone(){
    Intent callIntent = new Intent(Intent.ACTION_CALL);
    callIntent.setData(Uri.parse("tel:10086"));
    callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(callIntent);
}

这篇关于android - api23下报错“Call requires permission which may be rejected by user”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆