6.0运行权限
来源:互联网 发布:橙光游戏制作工具mac 编辑:程序博客网 时间:2024/06/04 19:19
6.0以后的权限主要针对于一些危险权限。
不多解释,直接上代码。
package com.xujiajian.unarygetgold.module;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Build;
import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
import java.util.ArrayList;
import java.util.List;
/**
* Created by 徐嘉健
* on 2017/2/14 14:03.
* 6.0运行时权限
*/
public class PermissionModule {
private static int mRequestCode = -1;
private static OnPermissionListener mOnPermissionListener;
public interface OnPermissionListener {
void onPermissionGranted();
void onPermissionDenied();
}
@TargetApi(Build.VERSION_CODES.M)
public static void requestPermissions(Context context, int requestCode
, String[] permissions, OnPermissionListener listener) {
if (context instanceof Activity) {
mOnPermissionListener = listener;
List<String> deniedPermissions = getDeniedPermissions(context, permissions);
if (deniedPermissions.size() > 0) {
mRequestCode = requestCode;
((Activity) context).requestPermissions(deniedPermissions
.toArray(new String[deniedPermissions.size()]), requestCode);
} else {
if (mOnPermissionListener != null)
mOnPermissionListener.onPermissionGranted();
}
} else {
throw new RuntimeException("Context must be an Activity");
}
}
/**
* 获取请求权限中需要授权的权限
*/
private static List<String> getDeniedPermissions(Context context, String... permissions) {
List<String> deniedPermissions = new ArrayList<>();
for (String permission : permissions) {
if (ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_DENIED) {
deniedPermissions.add(permission);
}
}
return deniedPermissions;
}
/**
* 请求权限结果,对应Activity中onRequestPermissionsResult()方法。
*/
public static void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (mRequestCode != -1 && requestCode == mRequestCode) {
if (mOnPermissionListener != null) {
if (verifyPermissions(grantResults)) {
mOnPermissionListener.onPermissionGranted();
} else {
mOnPermissionListener.onPermissionDenied();
}
}
}
}
/**
* 验证所有权限是否都已经授权
*/
private static boolean verifyPermissions(int[] grantResults) {
for (int grantResult : grantResults) {
if (grantResult != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
return true;
}
}
//使用
// PermissionModule.requestPermissions(this,100,new String[]{Manifest.permission.CALL_PHONE},new PermissionModule.OnPermissionListener(){
// @Override
// public void onPermissionGranted(){
// Toast.makeText(MainActivity.this,"OK",Toast.LENGTH_SHORT).show();
// //权限被同意,执行相应的逻辑
// }
//
// @Override
// public void onPermissionDenied(){
// Toast.makeText(MainActivity.this,"拒绝了",Toast.LENGTH_SHORT).show();
// }
// });
0 0
- 6.0运行时权限
- 6.0运行时权限
- 6.0运行权限
- Android 6.0运行权限
- 6.0运行时权限
- Android 6.0运行时权限
- Android 6.0运行时权限
- Android 6.0运行时权限
- Android 6.0+ 运行时权限
- Android 6.0运行时权限
- Android 6.0运行时权限
- android 6.0运行时权限
- android 6.0运行时权限
- Android 6.0 运行时权限
- Android 6.0运行时权限
- Android 6.0运行时权限
- Android 6.0 运行时权限
- Android 6.0运行权限添加
- 179. Largest Number
- Intel IA架构
- JVM重温
- 单链表和顺序表
- ios 文件上传, post数据
- 6.0运行权限
- JavaScript中的this关键字的用法和注意点
- 前端工具之bower
- Storm使用到的相关技术总结
- Go函数定义
- 【Linux】用户不在sudoers文件中(不会vi的里面也有使用到的步骤说明)
- 1754.I Hate It
- 【JDK编译】Centos7编译OpenJDK7
- activiti之流程变量值Business_key