package com.nbee.echolink.utils; import android.Manifest; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.pm.PackageManager; import android.widget.Toast; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import java.util.Arrays; import timber.log.Timber; public class PermissionUtils { private static final int PERMISSION_REQUEST_CODE = 1; private Activity activity; public PermissionUtils(Activity activity) { this.activity = activity; } public void checkPermissions() { String[] permissions = { Manifest.permission.READ_PHONE_STATE, Manifest.permission.SEND_SMS, Manifest.permission.READ_CALL_LOG, Manifest.permission.READ_CONTACTS, Manifest.permission.RECEIVE_SMS }; if (!hasPermissions(permissions)) { Timber.d("请求以下权限:" + Arrays.toString(permissions)); ActivityCompat.requestPermissions(activity, permissions, PERMISSION_REQUEST_CODE); } } private boolean hasPermissions(String... permissions) { for (String permission : permissions) { if (ContextCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) { Timber.d("缺少权限:" + permission); return false; } } return true; } public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { if (requestCode == PERMISSION_REQUEST_CODE) { StringBuilder deniedPermissions = new StringBuilder(); for (int i = 0; i < grantResults.length; i++) { if (grantResults[i] != PackageManager.PERMISSION_GRANTED) { if (deniedPermissions.length() > 0) deniedPermissions.append(", "); deniedPermissions.append(permissions[i]); } } if (deniedPermissions.length() > 0) { // 显示对话框 Timber.d("权限被拒绝:" + deniedPermissions.toString()); showAlert("以下权限被拒绝:\n" + deniedPermissions.toString()); } else { // 所有请求的权限都被授予 // 在这里处理所有权限被授予的情况 Timber.d("已获取所有权限:" + Arrays.toString(permissions)); showToast("已授予运行所需的权限"); return; } } } private void showAlert(String message) { new AlertDialog.Builder(activity) .setMessage(message) .setPositiveButton("确认", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .create() .show(); } private void showToast(String message) { Toast.makeText(activity, message, Toast.LENGTH_SHORT).show(); } }