更新 PermissionUtils.java

dev
wangsiyuan 2023-12-12 16:53:12 +08:00
parent a5e081a0a1
commit b64cb19e17
1 changed files with 25 additions and 12 deletions

View File

@ -3,8 +3,10 @@ package com.nbee.echolink.utils;
import android.Manifest; import android.Manifest;
import android.app.Activity; import android.app.Activity;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.content.DialogInterface; import android.content.ComponentName;
import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.provider.Settings;
import android.widget.Toast; import android.widget.Toast;
import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityCompat;
@ -17,7 +19,7 @@ import timber.log.Timber;
public class PermissionUtils { public class PermissionUtils {
private static final int PERMISSION_REQUEST_CODE = 1; private static final int PERMISSION_REQUEST_CODE = 1;
private Activity activity; private final Activity activity;
public PermissionUtils(Activity activity) { public PermissionUtils(Activity activity) {
this.activity = activity; this.activity = activity;
@ -30,11 +32,10 @@ public class PermissionUtils {
Manifest.permission.READ_CALL_LOG, Manifest.permission.READ_CALL_LOG,
Manifest.permission.READ_CONTACTS, Manifest.permission.READ_CONTACTS,
Manifest.permission.RECEIVE_SMS Manifest.permission.RECEIVE_SMS
}; };
if (!hasPermissions(permissions)) { if (!hasPermissions(permissions)) {
Timber.d("请求以下权限:\n" + Arrays.toString(permissions)); Timber.d("请求以下权限: %s", Arrays.toString(permissions));
ActivityCompat.requestPermissions(activity, permissions, PERMISSION_REQUEST_CODE); ActivityCompat.requestPermissions(activity, permissions, PERMISSION_REQUEST_CODE);
} }
} }
@ -42,7 +43,7 @@ public class PermissionUtils {
private boolean hasPermissions(String... permissions) { private boolean hasPermissions(String... permissions) {
for (String permission : permissions) { for (String permission : permissions) {
if (ContextCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) { if (ContextCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) {
Timber.d("缺少权限:\n" + permission); Timber.d("缺少权限: %s", permission);
return false; return false;
} }
} }
@ -62,8 +63,8 @@ public class PermissionUtils {
if (deniedPermissions.length() > 0) { if (deniedPermissions.length() > 0) {
// 显示对话框 // 显示对话框
Timber.d("权限被拒绝:" + deniedPermissions.toString()); Timber.d("权限被拒绝:%s", deniedPermissions);
showAlert("以下权限被拒绝:\n" + deniedPermissions.toString()); showAlert("以下权限被拒绝:\n" + deniedPermissions);
} }
} }
} }
@ -71,15 +72,27 @@ public class PermissionUtils {
private void showAlert(String message) { private void showAlert(String message) {
new AlertDialog.Builder(activity) new AlertDialog.Builder(activity)
.setMessage(message) .setMessage(message)
.setPositiveButton("确认", new DialogInterface.OnClickListener() { .setPositiveButton("确认", (dialog, which) -> dialog.dismiss())
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})
.create() .create()
.show(); .show();
} }
private void showToast(String message) { private void showToast(String message) {
Toast.makeText(activity, message, Toast.LENGTH_SHORT).show(); Toast.makeText(activity, message, Toast.LENGTH_SHORT).show();
} }
public boolean isNotificationServiceEnabled(Context context) {
String packageName = context.getPackageName();
String flat = Settings.Secure.getString(context.getContentResolver(), "enabled_notification_listeners");
if (flat != null && !flat.isEmpty()) {
final String[] activeListeners = flat.split(":");
for (String activeListener : activeListeners) {
ComponentName cn = ComponentName.unflattenFromString(activeListener);
if (cn != null && cn.getPackageName().equals(packageName)) {
return true;
}
}
}
return false;
}
} }