92 lines
3.1 KiB
Java
92 lines
3.1 KiB
Java
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();
|
|
}
|
|
}
|