首页 > 编程知识 正文

android获取安装列表权限,android权限判断

时间:2023-05-03 21:17:33 阅读:207380 作者:201

使用Android Marshmallow,即使您在Manifest文件中指定了这些权限,也必须明确请求用户的权限.

因此,您必须以这种方式请求位置权限:

首先,为位置创建请求代码

public static final int LOCATION_REQUEST_CODE = 1001; //Any number

然后检查是否已授予权限,如果没有,则代码将请求权限,该权限将显示要求拒绝/允许位置权限的本机弹出窗口

if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, LOCATION_REQUEST_CODE);

} else {

locationManager.requestLocationUpdates(locationManager.GPS_PROVIDER

,1000*60,2,this);

Location location = locationManager.getLastKnownLocation(locationManager.GPS_PROVIDER);

}

上述代码应在请求任何位置之前写入,最好是在活动的onCreate()中.然后根据用户在弹出窗口中执行的操作,您将获得一个回调,您可以根据自己的要求执行回调.

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

super.onRequestPermissionsResult(requestCode, permissions, grantResults);

switch (requestCode) {

case LOCATION_REQUEST_CODE: {

// If request is cancelled, the result arrays are empty.

if (grantResults.length > 0

&& grantResults[0] == PackageManager.PERMISSION_GRANTED

&& (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED

|| ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED)) {

locationManager.requestLocationUpdates(locationManager.GPS_PROVIDER

,1000*60,2,this);

Location location = locationManager.getLastKnownLocation(locationManager.GPS_PROVIDER);

}

}

}

}

此外,无论您何时尝试获取位置,都应检查是否已将权限授予您的应用程序,然后获取该位置.

if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {

locationManager.requestLocationUpdates(locationManager.GPS_PROVIDER

,1000*60,2,this);

Location location = locationManager.getLastKnownLocation(locationManager.GPS_PROVIDER);

}

您可以请求Manifest.permission.ACCESS_FINE_LOCATION或Manifest.permission.ACCESS_COARSE_LOCATION或两者.这取决于您的要求.

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。