阿雷网站建设购物网站建设价格
news/
2025/9/23 6:02:30/
文章来源:
阿雷网站建设,购物网站建设价格,wordpress怎么重新配置文件,免费装修设计图一、Android 权限机制 安装时权限声明 权限机制说明
安装软件时弹出软件所需要申请的全部权限#xff0c;如果用户认可软件申请的权限#xff0c;就会继续安装软件#xff1b;如果用户不认可所申请的权限#xff0c;就可以拒绝安装。
实现方式
在 AndroidManifest.mxl …
一、Android 权限机制 安装时权限声明 权限机制说明
安装软件时弹出软件所需要申请的全部权限如果用户认可软件申请的权限就会继续安装软件如果用户不认可所申请的权限就可以拒绝安装。
实现方式
在 AndroidManifest.mxl 文件中添加权限声明。例如
uses-permission android:nameandroid.permission.RECEIVE_BOOT_COMPLETED /存在的问题
软件安装前为所有需要的权限都作了申请如果有个别权限用户不想允许那就没办法安装这个软件。有可能这个权限对应的功能用户完全就用不到。
运行时权限声明 权限机制说明
用户不需要在安装软件的时候一次性授权所有申请的权限而是可以在软件的使用过程中再对某一项权限申请进行授权。
新版系统必须进行运行时权限处理
Android 6.0及以上系统在使用危险权限时必须进行运行时权限处理
二、权限分类
并不是所有权限都需要在运行时申请对用户来讲不停地授权也很繁琐。Android 现在将常用的权限大致归为两大类
普通权限
普通权限指的是那些不会直接威胁到用户的安全和隐私的权限对于这部分权限申请系统会自动帮我们进行授权不需要用户手动操作。
危险权限
危险权限表示那些可能会触及用户隐私或者对设备安全性造成影响的权限如获取设备联系人信息、定位设备的地理位置等对于这部分权限申请必须由用户手动授权才可以否则程序就无法使用相应的功能。
到Android 10 系统为止所有的危险权限
权限组名权限名CALENDARREAD_CALENDARWRITE_CALENDARCALL_LOGREAD_CALL_LOGWRITE_CALL_LOGPROCESS_OUTGOING_CALLSCAMERACAMERACONTACTSREAD_CONTACTSWRITE_CONTACTSGET_ACCOUNTSLOCATIONACCESS_FINE_LOCATION ACCESS_COARSE_LOCATION ACCESS_BACKGROUND_LOCATIONMICROPHONERECORD_AUDIOPHONEREAD_PHONE_STATE READ_PHONE_NUMBERS CALL_PHONE ANSWER_PHONE_CALLS ADD_VOICEMAIL USE_SIP ACCEPT_HANDOVERSENSORSBODY_SENSORSACTIVITY_RECOGNITIONACTIVITY_RECOGNITIONSMSSEND_SMS RECEIVE_SMS READ_SMS RECEIVE_WAP_PUSH RECEIVE_MMSSTORAGEREAD_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE ACCESS_MEDIA_LOCATION 同组权限自动授权
我们在进行运行时权限处理时使用的是权限名。原则上用户一旦同意了某个权限申请之后同组的其他权限也会被系统自动授权。
三、在程序运行时申请权限 要实现的功能
app 界面有一个按键点击这个按键拨打电话10086。
实现步骤 在 AndroidManifest.xml 文件声明权限
uses-permission android:nameandroid.permission.CALL_PHONE /封装拨打电话的功能
private void call()
{try {Intent intent new Intent(Intent.ACTION_CALL);intent.setData(Uri.parse(tel:10086));startActivity(intent);}catch (SecurityException e){e.printStackTrace();}
}注册按键点击事件
btnCall.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) PackageManager.PERMISSION_GRANTED){call();}else{ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.CALL_PHONE},1);}}
});ContextCompat.checkSelfPermission 查询app 是否被授权 CALL_PHONE 功能。ActivityCompat.requestPermissions 用于请求指定的权限。
关键函数介绍 ContextCompat.checkSelfPermission 函数功能
用于查询app 是否被授权某个权限.
函数原型
public static int checkSelfPermission(NonNull Context context, NonNull String permission)函数参数 第一个参数 Context context 上下文环境
这里传入的是activity.this 。
第二参数是字符串类型的权限变量。
由于每一个权限变量都是 Manifest 类的内部类的静态成员变量所以我们要先导入Manifest.
import android.Manifest;函数返回值
PackageManager.PERMISSION_GRANTED 权限被授权PackageManager.PERMISSION_DENIED 权限未被授权
ActivityCompat.requestPermissions 函数功能
申请权限可以申请多个
函数原型
public static void requestPermissions(final NonNull Activity activity,final NonNull String[] permissions, final IntRange(from 0) int requestCode)函数参数
参数1activity 对象参数2: 需要申请的权限列表字符串数组类型参数3requestCode 这里填入1.
四、异常记录 提示 Cannot resolve symbol ‘CALL_PHONE’ 问题描述
输入 Manifest.permission 时IDE 没自动补全 CALL_PHONE手动补全 Manifest.permission.CALL_PHONE 后IDE 提示 Cannot resolve symbol ‘CALL_PHONE’
解决办法
引入包
import android.Manifest;
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/911540.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!