打电话Demo及Android6.0的运行时权限问题
来源:互联网 发布:淘宝个人网店怎么注册 编辑:程序博客网 时间:2024/06/05 02:23
http://blog.csdn.net/qq_18995513/article/details/52544093
参考:http://droidyue.com/blog/2016/01/17/understanding-marshmallow-runtime-permission/
我的代码
private void phone () { if (Build.VERSION.SDK_INT >= 23) //版本大于23 { if (ContextCompat.checkSelfPermission(getActivity().getApplicationContext(), CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { //申请WRITE_EXTERNAL_STORAGE权限 ActivityCompat.requestPermissions(getActivity(), new String[]{CALL_PHONE}, 101); }else{ Intent intent = new Intent(Intent.ACTION_CALL); Uri data = Uri.parse("tel:" + Config.CUSTOM_PHONE); intent.setData(data); startActivity(intent); } } else{ Intent intent = new Intent(Intent.ACTION_CALL); Uri data = Uri.parse("tel:" + Config.CUSTOM_PHONE); intent.setData(data); startActivity(intent); } }
新手开局,查看一些旧资料,从打电话、发短信的小应用开始。代码很简单,主要是学习了:
- 用StartActivity()激活一个Activity组件。这里是激活了系统原生的打电话和发短信Activity。
- Intent意图对象的使用,包括设置其动作和数据。
- 在Manifest.xml清单文件中添加所需的权限。
做个笔记,主要代码如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
在Manifest清单中也配置了所需的拨号权限
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
然后遇到的问题是,在Android6.0目标平台下,即便已经添加了打电话的权限,运行时依然会报错安全异常:权限被拒绝。
在Stack Overflow上搜到了一个很靠谱的答案:
添加了权限依然报错权限拒绝
根据老外的提示,原来从Android6.0开始使用了新的运行时权限,权限种类被分为了【普通权限】和【危险权限】,顺藤摸瓜在官方文档学到了很有价值的东西,罗列一下以后在更新:
https://developer.android.com/training/permissions/index.html
学习关于系统权限
https://developer.android.com/training/permissions/declaring.html
如何申明权限
https://developer.android.com/guide/topics/security/permissions.html#normal-dangerous
权限被分为了普通和危险两种
https://developer.android.com/training/permissions/requesting.html#perm-check
【重要】如何在运行时检查并申请权限!!!!
推荐博文:
http://droidyue.com/blog/2016/01/17/understanding-marshmallow-runtime-permission/
http://blog.csdn.net/lmj623565791/article/details/50709663
http://www.cnblogs.com/mengdd/p/4892856.html
http://www.cnblogs.com/mengdd/p/4892856.html
http://www.2cto.com/kf/201512/455888.html
重要参考:http://stackoverflow.com/questions/30719047/android-m-check-runtime-permission-how-to-determine-if-the-user-checked-nev
根据以上资料,再次整理出打电话的Demo如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 打电话Demo及Android6.0的运行时权限问题
- 打电话Demo及Android6.0的运行时权限问题
- Android6.0运行时权限的处理及解决办法
- Android6.0运行时权限的处理及解决办法
- 关于Android6.0以上动态获取运行时权限、及无法正常运行百度地图API的问题
- Android6.0运行时权限的封装
- Android6.0运行时权限的处理
- Android6.0的运行时权限
- Android6.0+运行时权限的处理
- Android6.0 运行时权限
- Android6.0 运行时权限
- Android6.0运行时权限
- 【Android6.0】运行时权限
- Android6.0 运行时权限
- Android6.0 运行时权限
- Android6.0 运行时权限
- Android6.0运行时权限
- Android6.0运行时权限
- 数据库的帮助类以及DAO层代码
- navicat连接linux系统中mysql-错误:10038
- oracle条件不等于字符bug
- Coframe及NUI的样式在哪里改
- Linux CentOS上安装memcached及memcache
- 打电话Demo及Android6.0的运行时权限问题
- 查找本地联系人工具类
- linux下如何启动/停止/重启mysql:
- Android EnentBus 简单使用。
- Eclipse常用快捷键(修订版)
- location
- Boost 15 进程间通信
- 全局变量、静态全局变量、局部变量和静态局部变量
- 最大似然估计解决线性回归