Android 6.0权限申请
使用的是github上的
地址:https://github.com/lypeer/FcPermissions
- 先在build.gradle里面配置
allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
}
}
和
dependencies {
compile 'com.github.lypeer:FcPermissions:v0.0.1'
}
- 然后创建一个Activity或Fragment实现FcPermissionsCallbacks实现2个方法
public class MyActivity extends Activity implements FcPermissionsCallbacks {
//得到权限后的操作
@Override
public void onPermissionsGranted(int i, List<String> list) {
Toast.makeText(this, "已获得权限", Toast.LENGTH_SHORT).show();
}
//未得到权限的操作
@Override
public void onPermissionsDenied(int i, List<String> list) {
Toast.makeText(this, "未获取权限", Toast.LENGTH_SHORT).show();
//这是未得到权限,再次请求的方法
FcPermissions.checkDeniedPermissionsNeverAskAgain(
this, //这个是Activity或Fragment
"必须获得权限才可以下一步操作", //弹出的窗口的提示内容
R.string.setting, //确定的提示语,这个参数需要写在string里面
R.string.cancel, //取消的提示语,这个参数也是
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(mContext, "未提供权限,无法下一步", Toast.LENGTH_SHORT).show();
}
}, //取消按钮的单击事件,可以为null
list
);
}
}
- 全部的代码
public class MyActivity extends Activity implements FcPermissionsCallbacks {
private Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = this;
Button btn = (Button) findViewById(R.id.btn_request_camera);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
requestCameraPermission();
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
FcPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}
private void requestCameraPermission() {
//这里面请求的权限需要先在AndroidManifest里面先声明
//<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
FcPermissions.requestPermissions(this, "请求访问文件权限", FcPermissions.REQ_PER_CODE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
@Override
public void onPermissionsGranted(int i, List<String> list) {
Toast.makeText(this, "已获得权限", Toast.LENGTH_SHORT).show();
}
@Override
public void onPermissionsDenied(int i, List<String> list) {
Toast.makeText(this, "未获取权限", Toast.LENGTH_SHORT).show();
FcPermissions.checkDeniedPermissionsNeverAskAgain(this, "必须获得权限才可以下一步操作", R.string.setting, R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(mContext, "未提供权限,无法下一步", Toast.LENGTH_SHORT).show();
}
}, list);
}
}