首页 > 其他分享 >Android获取Permission

Android获取Permission

时间:2022-09-06 13:12:23浏览次数:85  
标签:success get -- Permission 获取 requestCode Android 权限 FINE

AndroidManifest中加入需要获取的权限

<uses-permission android:name="android.permission.INTERNET" /> 
<!-- 检查网络可用性 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 访问WiFi状态 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 需问要问外部存储写权限用于保存地图缓存 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<!-- 获取 device id 辨别设备 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 通过GPS得到精确位置 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<!-- 通过网络得到粗略位置 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 访问网络,某些位置信息需要从网络服务器获取 -->
<uses-permission android:name="android.permission.INTERNET" /> 
<!-- 访问WiFi状态,需要WiFi信息用于网络定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 修改WiFi状态,发起WiFi扫描, 需要WiFi信息用于网络定位 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
<!-- 访问网络状态, 检测网络的可用性,需要网络运营商相关信息用于网络定位 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<!-- 访问网络的变化, 需要某些信息用于网络定位 -->
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> 
<!-- 蓝牙扫描权限 -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<!-- 前台service权限 -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<!-- 后台定位权限 -->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

Activity中加入权限获取和回调的重写

/**
 * 获取定位的权限
 * 1001 是 requestCode
 */
private void initPermission() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (ContextCompat.checkSelfPermission(mainActivity, Manifest.permission.ACCESS_FINE_LOCATION) != PERMISSION_GRANTED) {
            // 检查权限状态
            if (ActivityCompat.shouldShowRequestPermissionRationale(mainActivity, Manifest.permission.ACCESS_FINE_LOCATION)) {
                /**
                 * 用户彻底拒绝授予权限,一般会提示用户进入设置权限界面
                 * 第一次授权失败之后,退出App再次进入时,再此处重新调出允许权限提示框
                 */
                ActivityCompat.requestPermissions(mainActivity, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1001);
                Log.d("info:", "-----get--Permissions--success--1-");
            } else {
                /**
                 * 用户未彻底拒绝授予权限
                 * 第一次安装时,调出的允许权限提示框,之后再也不提示
                 */
                Log.d("info:", "-----get--Permissions--success--2-");
                ActivityCompat.requestPermissions(mainActivity, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1001);
            }
        }
    }
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == 1001) {
        for (int i = 0; i < permissions.length; i++) {
            if (grantResults[i] == PERMISSION_GRANTED) {
                // 申请成功
                Log.d("info:", "-----get--Permissions--success--3-");

            } else {
                // 申请失败
                Toast.makeText(this, "请在设置中更改定位权限", Toast.LENGTH_SHORT).show();
                Log.d("info:", "-----get--Permissions--success--4-");
            }
        }
    }
}

标签:success,get,--,Permission,获取,requestCode,Android,权限,FINE
From: https://www.cnblogs.com/MarkDespite/p/16661404.html

相关文章