最近做扫码考勤时,在AndroidManifest.xml中增加了打开相机的权限,却不起作用。
经研究,在android6.0之后,需要用户自己判断权限,增加了安全性。解决的方式,可以用的第三方,当然,也可以自己去定义。
第三方路径:https://github.com/lovedise/PermissionGen
使用步骤:
1、在gradle中增加:
compile ‘com.lovedise:permissiongen:0.0.6’
2、判断当前应用是否打开了相应的权限,如果没有就提示用户是否打开应用:
1)当前界面是activity:
PermissionGen.with(StuMainActivity.this)
.addRequestCode(105)
.permissions(
Manifest.permission.CAMERA,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
.request();
2)当前界面是fragment:
PermissionGen.needPermission(StudyFragment.this, 105,
new String[] {
Manifest.permission.CAMERA,
Manifest.permission.WRITE_EXTERNAL_STORAGE
}
);
其中,105是请求码,后续返回结果时,用于与打开的权限呼应;
3、在activity或fragment中加入如下方法:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions,
int[] grantResults) {
PermissionGen.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
}
4、在activity或fragment中加入打开权限成功或着打开权限失败的代码:
打开权限成功:
@PermissionSuccess(requestCode = 105)
public void doSomething(){
/*打开权限成功时执行的功能 */
}
打开权限失败:
@PermissionFail(requestCode = 105)
public void doFailSomething(){
/*打开权限失败后,给出的提示*/
Toast.makeText(this, "相机权限打开失败!", t.LENGTH_SHORT).show();
}