【Android】权限申请

本文详细介绍了在Android应用中如何申请必要的权限,并通过这些权限实现定位功能。包括调用手机震动、保持屏幕常亮、获取GPS及网络定位、访问网络状态等权限的具体配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在AndroidMenifest.xml中申请权限如下:

<!-- 调用手机震动权限 -->
<uses-permission android:name="android.permission.VIBRATE" />
<!-- 保持屏幕常亮 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!--用于申请调用A-GPS模块-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
<!--获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<!--用于访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET"/>
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!--用于申请获取蓝牙信息进行室内定位-->
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

在app的build.gradle中:

implementation(name: 'rxpermission', ext: 'aar')

该aar资源链接:https://download.csdn.net/download/qq_30885821/15576772

在MainActivity.java中:

// 需要获取的权限
private String[] permissions = {
        Manifest.permission.ACCESS_FINE_LOCATION,
        Manifest.permission.ACCESS_BACKGROUND_LOCATION,
        Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
        Manifest.permission.ACCESS_WIFI_STATE,
        Manifest.permission.CHANGE_WIFI_STATE,
        Manifest.permission.INTERNET,
        Manifest.permission.ACCESS_NETWORK_STATE,
        Manifest.permission.READ_PHONE_STATE,
        Manifest.permission.WRITE_EXTERNAL_STORAGE,
        Manifest.permission.BLUETOOTH,
        Manifest.permission.BLUETOOTH_ADMIN,
};

// 权限检测
private void requestPermission() {
    RxPermissions rxPermissions = new RxPermissions(this);
    rxPermissions.requestEach(permissions)
            .subscribe(permission -> {
                if (permission.granted) {
                    initGaodeMap();
                } else if (permission.shouldShowRequestPermissionRationale) {
                    
                    boolean fineLocationPermissionApproved =
                            ActivityCompat.checkSelfPermission(this,
                                    Manifest.permission.ACCESS_FINE_LOCATION)
                                    == PackageManager.PERMISSION_GRANTED;
                    if (!fineLocationPermissionApproved) {
                        Toast.makeText(MainActivity.this, "请开启定位权限", Toast.LENGTH_LONG).show();
                        return;
                    }
                    
                    boolean backgroundLocationPermissionApproved =
                            ActivityCompat.checkSelfPermission(this,
                                    Manifest.permission.ACCESS_BACKGROUND_LOCATION)
                                    == PackageManager.PERMISSION_GRANTED;
                    if (!backgroundLocationPermissionApproved) {
                        // Denied permission without ask never again
                        Toast.makeText(MainActivity.this, "请始终允许定位,否则应用退到后台或手机锁屏后无法记录位置信息", Toast.LENGTH_LONG).show();
                    }
                } else {
                    // Denied permission with ask never again
                    //Need to go to the setting
                }

            });
}


// 在oncreate中调用函数获取权限
requestPermission();
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值