android动态申请权限

来源:互联网 发布:python编程第四版云盘 编辑:程序博客网 时间:2024/04/29 12:25

动态申请权限 以定位为例

private static final int MY_PERMISSIONS_LOCATION = 100;

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    ButterKnife.bind(this);    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)            != PackageManager.PERMISSION_GRANTED            ||            ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)                    != PackageManager.PERMISSION_GRANTED)    {        //请求定位权限        ActivityCompat.requestPermissions(                this,                new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,                        Manifest.permission.ACCESS_FINE_LOCATION},                MY_PERMISSIONS_LOCATION);    }

}

//一旦申请,申请结果(赋予权限(此权限相关的功能可以使用),拒绝权限(功能无法使用))
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
//如果请求状态码保持一致
if (requestCode == MY_PERMISSIONS_LOCATION)
{
//获取请求结果
if (grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
// Permission Allow
Toast.makeText(MainActivity.this, “权限允许”, Toast.LENGTH_SHORT).show();
} else {
// Permission Denied
Toast.makeText(MainActivity.this, “权限拒绝”, Toast.LENGTH_SHORT).show();
}
return;
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}

注意导包 import android.Manifest;
还有如果第一次运行没有结果的话,把应用卸载重装一下。