Android 6.0 之后动态权限申请
来源:互联网 发布:windows 64位汇编语言 编辑:程序博客网 时间:2024/05/18 21:05
权限申请在Android 6.0 之前只是需要在 Manifest之中加一行代码就行,如下:
<uses-permission android:name="android.permission.CALL_PHONE" />
此处以打电话权限CALL_PHONE为例.
事实上权限分为两种
普通权限 :不威胁用户安全与隐私.
危险权限:威胁用户安全和隐私.
Android 6.0 之前都可以在Manifest文件中直接写就可以.
Android 6.0 之后 危险权限 需要动态申请.
依然以打电话作为例子,代码如下 :
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { Button btnCall = (Button) findViewById(R.id.btn_main_call); btnCall.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //点击拨打电话是,因为是危险权限,所以需要动态申请. //首先判断这个权限是否已被申请通过. if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_DENIED) { //未通过,继续申请 ActivityCompat.requestPermissions(MainActivity.this,new String[] {Manifest.permission.CALL_PHONE},1); } else { //通过,直接拨打电话 call(); } } }); } private void call() { Intent intent = new Intent(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:10086")); startActivity(intent); } /** * 通过查看返回值,判断是否授权成功 * @param requestCode * @param permissions * @param grantResults */ @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode) { case 1 : if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { //成功 call(); } else { //失败 Toast.makeText(MainActivity.this,"授权失败",Toast.LENGTH_LONG).show(); } break; default: } }}
动态申请完毕,再贴一下危险权限列表,如果需要申请权限可以先查看是否是危险权限:
group:android.permission-group.CONTACTS
permission:android.permission.WRITE_CONTACTS
permission:android.permission.GET_ACCOUNTS
permission:android.permission.READ_CONTACTSgroup:android.permission-group.PHONE
permission:android.permission.READ_CALL_LOG
permission:android.permission.READ_PHONE_STATE
permission:android.permission.CALL_PHONE
permission:android.permission.WRITE_CALL_LOG
permission:android.permission.USE_SIP
permission:android.permission.PROCESS_OUTGOING_CALLS
permission:com.android.voicemail.permission.ADD_VOICEMAILgroup:android.permission-group.CALENDAR
permission:android.permission.READ_CALENDAR
permission:android.permission.WRITE_CALENDARgroup:android.permission-group.CAMERA
permission:android.permission.CAMERAgroup:android.permission-group.SENSORS
permission:android.permission.BODY_SENSORSgroup:android.permission-group.LOCATION
permission:android.permission.ACCESS_FINE_LOCATION
permission:android.permission.ACCESS_COARSE_LOCATIONgroup:android.permission-group.STORAGE
permission:android.permission.READ_EXTERNAL_STORAGE
permission:android.permission.WRITE_EXTERNAL_STORAGEgroup:android.permission-group.MICROPHONE
permission:android.permission.RECORD_AUDIOgroup:android.permission-group.SMS
permission:android.permission.READ_SMS
permission:android.permission.RECEIVE_WAP_PUSH
permission:android.permission.RECEIVE_MMS
permission:android.permission.RECEIVE_SMS
permission:android.permission.SEND_SMS
permission:android.permission.READ_CELL_BROADCASTS
同一个group内的权限只要有一个被同意授权,权限组内其余的权限也会被默认授权
- Android 6.0 之后动态权限申请
- Android 6.0 动态申请权限
- android 6.0权限动态申请
- Android 6.0 动态权限申请
- Android 6.0权限动态申请
- Android 6.0 动态权限申请
- android 6.0 动态权限申请
- Android 6.0 动态权限申请
- Android 6.0动态权限申请
- Android 6.0 动态权限申请
- Android 6.0 动态申请权限
- Android 6.0权限动态申请
- Android 6.0 动态申请权限
- Android 6.0动态权限申请
- Android 6.0动态权限申请
- android 6.0动态申请权限
- Android 6.0 动态权限申请
- Android 6.0动态申请权限
- js对数组的操作
- 1019 进制转换 回文数
- Java 回调函数作用和使用场景
- Python之tkinter模块实现登录功能
- 基于心跳的socket长连接
- Android 6.0 之后动态权限申请
- Linux的iptables防火墙配置详解
- 睡到了一点半
- File类的getPath()、getAbsolutePath()、getCanonicalPath()
- Android中ConvenientBanner 网络上的图片
- 关于字典dict中的迭代
- 【spark】spark-hive操作
- 在搜索引擎推广自己的网站(比如,百度)
- 2013-2014 ACM-ICPC Brazil Subregional Programming Contest