android中的权限批量申请

在《第一行代码Android》中学到批量申请多个权限的代码:

在Manifest.xml中声明权限

<!--连接网络权限,用于执行云端语音能力 -->
    <uses-permission android:name="android.permission.INTERNET"/>
    <!--获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 -->
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <!--读取网络信息状态 -->
    <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.CHANGE_NETWORK_STATE"/>
    <!--读取手机信息权限 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <!--读取联系人权限,上传联系人需要用到此权限 -->
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <!--假如我们要保存录音,还需要以下权限-->
    <!-- 在SDCard中创建与删除文件权限 -->
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
    <!-- SD卡权限  -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <!-- 允许程序读取或写入系统设置 -->
    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
在JAVA代码中对权限进行申请
/**
     * App所需权限进行申请
     */
    private void requestPermission(){
        if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
                != PackageManager.PERMISSION_GRANTED){
            permissionList.add( Manifest.permission.WRITE_EXTERNAL_STORAGE);
        }
        if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE)
                != PackageManager.PERMISSION_GRANTED){
            permissionList.add( Manifest.permission.READ_PHONE_STATE);
        }
        if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.INTERNET)
                != PackageManager.PERMISSION_GRANTED){
            permissionList.add( Manifest.permission.INTERNET);
        }
        if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.RECORD_AUDIO)
                != PackageManager.PERMISSION_GRANTED){
            permissionList.add( Manifest.permission.RECORD_AUDIO);
        }
        if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_NETWORK_STATE)
                != PackageManager.PERMISSION_GRANTED){
            permissionList.add( Manifest.permission.ACCESS_NETWORK_STATE);
        }
        if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_WIFI_STATE)
                != PackageManager.PERMISSION_GRANTED){
            permissionList.add( Manifest.permission.ACCESS_WIFI_STATE);
        }
        if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CHANGE_NETWORK_STATE)
                != PackageManager.PERMISSION_GRANTED){
            permissionList.add( Manifest.permission.CHANGE_NETWORK_STATE);
        }
        if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_CONTACTS)
                != PackageManager.PERMISSION_GRANTED){
            permissionList.add( Manifest.permission.READ_CONTACTS);
        }
        if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS)
                != PackageManager.PERMISSION_GRANTED){
            permissionList.add( Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);
        }
        if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_SETTINGS)
                != PackageManager.PERMISSION_GRANTED){
            permissionList.add( Manifest.permission.WRITE_SETTINGS);
        }
        if (!permissionList.isEmpty()){
            String[] permissions = permissionList.toArray(new String[permissionList.size()]);
            ActivityCompat.requestPermissions(MainActivity.this,permissions,1);
        }
        return;
    }

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 10.0 权限动态申请需要遵循以下步骤: 1. 添加权限AndroidManifest.xml 文件 在你的应用的 AndroidManifest.xml 文件添加所需的权限。例如,如果你的应用需要访问设备的存储空间,则需要添加以下权限: ```xml <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ``` 2. 检查权限是否已经被授予 在应用检查权限是否已经被授予。可以使用以下代码: ```java private boolean checkPermission(String permission) { int result = ContextCompat.checkSelfPermission(this, permission); return result == PackageManager.PERMISSION_GRANTED; } ``` 3. 请求权限 如果权限没有被授予,则需要请求权限。可以使用以下代码: ```java private void requestPermission(String permission, int requestCode) { ActivityCompat.requestPermissions(this, new String[]{permission}, requestCode); } ``` 4. 处理权限请求结果 当用户响应权限请求时,系统将调用 onRequestPermissionsResult() 方法。在该方法,你需要检查用户是否授予了权限。如果用户授予权限,则你可以执行所需的操作。如果用户拒绝了权限,则你需要提供一些解释或提示,以便用户重新请求权限。可以使用以下代码: ```java @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE: { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // 权限被授予,执行所需的操作 } else { // 权限被拒绝,提供解释或提示 } return; } } } ``` 上面的例子,MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE 是请求码,用于识别该权限请求。可以在请求权限时为其指定一个值。 需要注意的是,在 Android 10.0 ,一些权限需要使用新的权限模型,如存储权限。你需要使用新的 API 来请求这些权限。例如,如果你的应用需要访问设备的存储空间,则需要使用以下代码请求权限: ```java private void requestStoragePermission() { boolean useLegacyStorage = !Environment.isExternalStorageLegacy(); if (useLegacyStorage) { requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, REQUEST_CODE); } else { Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION); intent.setData(Uri.parse("package:" + getPackageName())); startActivityForResult(intent, REQUEST_CODE); } } ``` 在上面的代码,Environment.isExternalStorageLegacy() 用于检查设备是否支持新的存储权限模型。如果设备支持新的模型,则需要打开存储权限设置页面,让用户手动授予权限。如果设备不支持新的模型,则可以使用旧的权限模型来请求权限

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值