Android6.0 有关权限的研究(第二版)
来源:互联网 发布:windows 无线触摸板 编辑:程序博客网 时间:2024/06/01 23:50
检查是否可以使用该权限,调用
ContextCompat.checkSelfPermission()
例如:
ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.WRITE_CALENDAR);
如果应用有该权限,该方法将返回 PackageManager.PERMISSION_GRANTED
,应用可以进行相关的操作。
如果应用不能使用该权限,该方法将返回PERMISSION_DENIED
,这时应用将必须要向用户申请该权限。
应用没有所需的权限时,应用必须调用ActivityCompat.requestPermissions(
方法来申请对用的权限。
Activity activity, String[] permissions, int requestCode)
在用户响应了请求权限的对话框之后,系统会调用对用的回调方法来通知结果,并且会传递在reqeustPermissions()
方法中的request code
。(在Android6.0之前调用的时候会直接去调用onRequestPermissionsResult()
的回调方法)
好了好了,抄书就抄到这了,我们来看看下面,非常简单的几步代码就可以解决的。
下面这些需要申请的权限,每个类别只需要申请一个,其他便会自动获权。
以定位和存储权限为例:(自己写的一个类,没有涉及太多细节,但初学者正常使用足够)
PremissionBase类:
public class PremissionBase { private static final int PERMISSION_REQUESTCODE = 100; List<String>premissionList = new ArrayList<>(); public void achievepremissions(String[] premissions,Activity activity){ for(String premission : premissions) { if (ContextCompat.checkSelfPermission(activity,premission) != PackageManager.PERMISSION_GRANTED){ premissionList.add(premission); } } if (!premissionList.isEmpty()){ ActivityCompat.requestPermissions(activity, premissionList.toArray(new String[premissionList.size()]),PERMISSION_REQUESTCODE); } }}
在MainActivity中写一个String[]就可以将多个权限一并申请了:
final String[] premissions = { Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION};
然后:
premissionBase.achievepremissions(premissions,MainActivity.this);
完整MainActivity:
public class MainActivity extends AppCompatActivity { PremissionBase premissionBase = new PremissionBase(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final String[] premissions = { Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION}; Button button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { premissionBase.achievepremissions(premissions,MainActivity.this); } }); }}
这里我只是写了单纯的申请,什么reqeustPermissions()啊,什么回调啊,我没写,其实很简单,功能就是在用户按了什么之后可以做一些额外操作,有时候可有可无,需要时自行添加吧。
0 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中对权限的处理
- 关于android6.0权限的问题
- android6.0版本的权限申请处理
- Android6.0的新权限,动态添加
- 必须了解的Android6.0权限
- android6.0以及以上的权限处理
- Android6.0运行时权限的封装
- 聊天机器人_ _突击01编队_ _浅聊
- uva 658 It's not a Bug, it's a Feature! 最短路dijstra
- Interface和abstract类的区别
- spring boot实现文件上传下载以及多文件上传
- 自定义adapter notifyDataSetChanged失效的解决
- Android6.0 有关权限的研究(第二版)
- 面经
- 关于java多态的解释学习
- Angular入门级教程三 Angular 中的控制器(controller)
- 洛谷 1417——烹调方案【动规】
- ehcache memcache redis 比较
- linux安装chrome,chrome安装flash player,firefox安装flash player
- android自定义属性
- 组件化入门