Java学习笔记-Java基础语法

springmvc乱码问题(SpringMVC学习笔记九)

  返回  

Android--运行时权限申请

2021/8/21 18:07:48 浏览:

以打电话为例子

首先在AndroidManifest.xml文件中声明如下权限

 <uses-permission android:name="android.permission.CALL_PHONE" />

然后运行时申请权限

public class RuntimePermissionTest extends AppCompatActivity {

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

        Button callButton = (Button) findViewById(R.id.make_call);
        callButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
              //判断用户是不是已经授权了,借助Context.checkSelfPermission()方法。
              //然后使用方法返回值和PackageManage.PERMISSION_GRANTED作比较,相等就说明已经授权
              if(ContextCompat.checkSelfPermission(RuntimePermissionTest.this, Manifest.permission.CALL_PHONE)
                != PackageManager.PERMISSION_GRANTED) {
                 //调用ActivityCompat.requestPermissions()方法申请权限
                 ActivityCompat.requestPermissions(RuntimePermissionTest.this,
                            new String[]{Manifest.permission.CALL_PHONE}, 1);
                } else {
                    call();
                }
            }
        });
    }

    private void call() {
        Intent intent = new Intent(Intent.ACTION_CALL);
        intent.setData(Uri.parse("tel:10086"));
        startActivity(intent);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode) {
            case 1:
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    call();
                } else {
                    Toast.makeText(this, "You denied the permission", Toast.LENGTH_SHORT).show();
                }
                break;
            default:
                break;
        }
    }
}

第一步:判断用户是不是已经授权了,借助Context.checkSelfPermission() 方法。此方法接受两个参数,第一个Context,第二个具体的权限名。然后使用 方法返回值 PackageManage.PERMISSION_GRANTED 作比较,相等就说明已经授权

第二步:如果不相等则申请权限,调用ActivityCompat.requestPermissions() 方法向用户申请权限,此方法接受三个参数,第一个Context,第二个String数组,我们把具体的权限名放在数组中即可,第三个是请求码。

第三步:调用requestPermissions()方法之后,系统会弹出一个申请权限的对话框,然后用户可以选择同意或拒绝,只后会回调onRequestPermissionsResult() 方法,将授权的结果封装在grantResults[]数组中,只需判断一下授权结果,然后进行操作。

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号