您的位置:首页 > 移动开发 > Android开发

android 6.0 权限请求工具类

2016-10-19 10:53 429 查看
//导入的包
import android.app.Activity;
import android.content.pm.PackageManager;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.util.Log;

/**
* 项目名称:LiuTest
* 类描述: 权限请求工具类
* 创建人:liubing
* 创建时间:2016/10/19 9:44
* 修改人:Administrator
* 修改时间:2016/10/19 9:44
* 修改备注:
* 使用步骤
* 1.在activity中在PERMISSIONS数组中放入该类中所有用到的权限
* private String [] PERMISSIONS = new String[]{
* Manifest.permission.CALL_PHONE,
* Manifest.permission.READ_PHONE_STATE
* };
* 2. 点击拨打电话时调用requestPer方法判断
* findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
* @Override public void onClick(View v) {
* if (RequstPermissionsUtil.requestPer(MainActivity.this, PERMISSIONS[0],0))
* {
* Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:4001851518"));
* startActivity(intent);
* }
* }
* });
* 3.在activity中的onRequestPermissionsResult方法中调用RequstPermissionsUtil.onRequestPermissionsResult方法将数据传进去进行回调
* @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
* super.onRequestPermissionsResult(requestCode, permissions, grantResults);
* RequstPermissionsUtil.onRequestPermissionsResult(MainActivity.this,PERMISSIONS[requestCode],requestCode,permissions,grantResults);
* }
*/
public class RequstPermissionsUtil {

private static boolean isper;//返回是否获取到权限
//权限判断

/**
* @param activity    当前的activity
* @param permiss     请求的权限
* @param requestCode 请求码
* @return
*/
public static boolean requestPer(Activity activity, String permiss, int requestCode) {
if (ContextCompat.checkSelfPermission(activity, permiss) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(activity, new String[]{permiss},
requestCode);
Log.e("222222222", "请求权限");
return isper;
} else {
//请求成功之后
isper = true;
return true;
}
}

/**
* @param activity     当前的activity
* @param permiss      请求的权限
* @param requestCode  activity中的onRequestPermissionsResult方法自带的参数
* @param permissions  activity中的onRequestPermissionsResult方法自带的参数
* @param grantResults activity中的onRequestPermissionsResult方法自带的参数
*/
public static void onRequestPermissionsResult(Activity activity, String permiss, int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case 1: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
requestPer(activity, permiss, requestCode);
} else {
Log.e("333333333333333", "没有获取到权限");
isper = false;
}
Log.e("333333333333333", "3333333333333");
break;
}
}
}
}

//在Mainactivity中调用的示例
import android.Manifest;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import com.example.administrator.liutest.R;
import com.example.administrator.liutest.RequstPermissionsUtil;
public class MainActivity extends AppCompatActivity {

//该数组是存放该类中所有用到的权限
private String [] PERMISSIONS = new String[]{
Manifest.permission.CALL_PHONE,
Manifest.permission.READ_PHONE_STATE
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maina);

findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

//权限判断
if (RequstPermissionsUtil.requestPer(MainActivity.this, PERMISSIONS[0],0))
{
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:123465"));
startActivity(intent);
}
}
});
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
RequstPermissionsUtil.onRequestPermissionsResult(MainActivity.this,PERMISSIONS[requestCode],requestCode,permissions,grantResults);
}

}

如果有错误的地方多多指出,共同学习。QQ:724266839
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息