首页 / ANDROID / Android6.0获取权限
Android6.0获取权限
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android6.0获取权限,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2468字,纯文字阅读大概需要4分钟。
内容图文
![Android6.0获取权限](/upload/InfoBanner/zyjiaocheng/1149/291249c9b97d419c996891599643b1f9.jpg)
照着《第一行代码》打代码,然并卵,感叹技术进步的神速。最后提醒一点:IT类的书籍一定要注意出版时间!出版时间!出版时间!重要的事情说三遍
问题出在android6.0的权限获取问题上,以前只要在Manifest.xml一次性获取便可以了,android6.0之后要手动去获得运行时权限才行。
1. 新增的api
ContextCompact.checkSelfPermission()--->检查是否有权限
ActivityCompat.requestPermission()--->去申请权限,ActivityCompat继承于ContextCompact
onRequestPermissionResult()-->请求权限是个异步的过程,所以要在回调里处理结果,在onRequestPermissionResult()里拿到用户是否授权,并做相应的处理。
ActivityCompat.shouldShowRequsetPermissionRationale()-->向用户解释权限用来做什么,在用户拒绝过才会出现
2.使用流程
3.例子
以打电话作为例子,首先在Manifest.xml中注册权限
然后在MainActivity.java中按照流程来便可以
1 package com.example.permissionadmin; 2 3 import android.Manifest; 4 import android.app.Activity; 5 import android.content.Intent; 6 import android.content.pm.PackageManager; 7 import android.net.Uri; 8 import android.os.Bundle; 9 import android.support.v4.app.ActivityCompat; 10 import android.support.v4.content.ContextCompat; 11 import android.view.View; 12 import android.view.View.OnClickListener; 13 import android.widget.Button; 14 15 public class MainActivity extends Activity implements OnClickListener{ 1617private Button callPhone; 1819 @Override 20protectedvoid onCreate(Bundle savedInstanceState) { 21super.onCreate(savedInstanceState); 22 setContentView(R.layout.activity_main); 23 callPhone=(Button)findViewById(R.id.call_Phone); 24 callPhone.setOnClickListener(this); 25 } 2627 @Override 28publicvoid onClick(View v) { 29// TODO Auto-generated method stub 30//如果没有权限则请求权限,否则直接打电话即可31if(ContextCompat.checkSelfPermission(this,Manifest.permission.CALL_PHONE)!= 32 PackageManager.PERMISSION_GRANTED){ 33//第二个参数是数组表明可以一次性获取多个权限,后面的请求码要和回调处理函数的请求码对上34 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, 1); 35 }else{ 36 doCallPhone(); 37 } 38 } 3940publicvoid doCallPhone(){ 41 Intent intent=new Intent(Intent.ACTION_CALL); 42 Uri data=Uri.parse("tel:"+"10086"); 43 intent.setData(data); 44this.startActivity(intent); 45 } 4647 @Override 48/**49 * 不同的请求码来对应不同的授权请求 50 * grantResults数组:权限请求结果 51*/52publicvoid onRequestPermissionsResult(int requestCode, 53 String[] permissions, int[] grantResults) { 54if(requestCode==1){ 55if(grantResults[0]==PackageManager.PERMISSION_GRANTED){ 56 doCallPhone(); 57 }else{ 58//提示用户权限未被授予59 } 60 } 61 } 62 }
4.吐槽
学到《第一行代码》的第11章基于位置的服务,按照上面打代码位置始终无法显示,原来以为是权限问题,后来发现即使按照这上面的来还是无法显示自己的经纬度,所以将例子改成了打电话。现在的原因可能是:1.Gps室内无法定位。2.对于Network这种定位,默认用的是谷歌,无法使用。
想到的可能原因就是这两个了,希望有大神答疑解惑,谢谢啦!!!
原文:http://www.cnblogs.com/f91og/p/6181325.html
内容总结
以上是互联网集市为您收集整理的Android6.0获取权限全部内容,希望文章能够帮你解决Android6.0获取权限所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。