Android权限申请封装

public class BaseActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }


    /**
     * 为子类提供一个权限检查方法
     * @param permissions
     * @return
     */
    public boolean hasPermissions(String... permissions){

        for(String permission:permissions){
            if(ContextCompat.checkSelfPermission(this,permission)!= PackageManager.PERMISSION_GRANTED){
                return false;
            }
        }

        return true;
    }

    /**
     * 权限申请方法
     * @param requestCode
     * @param permissions
     */
    public void requestPermissions(int requestCode,String... permissions){
        ActivityCompat.requestPermissions(this,permissions,requestCode);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode){
            case Constant.CALL_PHONE_CODE:
                if(grantResults[0]==PackageManager.PERMISSION_GRANTED){

                    doCallPhone();
                }else {

                    Toast.makeText(this,"你拒绝了打电话权限",Toast.LENGTH_SHORT).show();
                }
                break;
        }

    }

    /**
     * 默认的打电话空实现
     */
    public void doCallPhone() {}

}

public class TestPermissionsActivity extends BaseActivity implements View.OnClickListener{

    private Button btnCall,btnDownload;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
    }

    private void initView() {
        btnCall= (Button) findViewById(R.id.btn_call);
        btnDownload= (Button) findViewById(R.id.btn_download);
        btnCall.setOnClickListener(this);
        btnDownload.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.btn_call:
                    callphone();
                break;
            case R.id.btn_download:

                break;
        }
    }

    private void callphone() {

        if(!hasPermissions(Manifest.permission.CALL_PHONE)){
            //做权限申请
           requestPermissions(Constant.CALL_PHONE_CODE,Manifest.permission.CALL_PHONE);
        }else {
            doCallPhone();
        }
    }

    @Override
    public void doCallPhone() {
        Intent intent=new Intent(Intent.ACTION_CALL);
        Uri data=Uri.parse("tel:"+10086);
        intent.setData(data);
        this.startActivity(intent);

    }


}
public class Constant {

    /**
     * 权限申请相关
     */
    public static final int CALL_PHONE_CODE = 0;

}

猜你喜欢

转载自blog.csdn.net/baidu_33575737/article/details/80546192
今日推荐