После некоторых исследований кажется невозможным узнать, когда другое стороннее приложение запрашивает МИКРОФОН по соображениям безопасности.
Если вы хотите выполнить действия в соответствии с фактическим состоянием медиа-рекордера, вам, возможно, придется обращаться с этим, как описано в этом посте:
Как определить, используется ли MediaRecorder другим приложением?
А что касается определения прав доступа для других приложений, я думаю, что это может дать ответ: Как определить права доступа для других приложений?
Но если вы хотите проверить приложения, которым требуется разрешение RECORD_AUDIO, вы можете продолжить чтение следующих строк:
На основании ответа Копи-Б на этот вопрос
Чтобы получить список приложений, запрашивающих микрофон, вы можете выполнить следующее:
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
final List pkgAppsList = getPackageManager().queryIntentActivities(mainIntent, 0);
//create a package names list
List<String> packageNames=new ArrayList<>();
for (Object obj : pkgAppsList) {
ResolveInfo resolveInfo = (ResolveInfo) obj;
PackageInfo packageInfo = null;
try {
packageInfo = getPackageManager().getPackageInfo(resolveInfo.activityInfo.packageName, PackageManager.GET_PERMISSIONS);
} catch (PackageManager.NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String[] requestedPermissions = packageInfo.requestedPermissions;
//check the microphone permission
if (requestedPermissions!=null) {
for (String packagePermission : requestedPermissions) {
if (packagePermission == Manifest.permission.RECORD_AUDIO) {
packageNames.add(packageInfo.packageName);
break;
}
}
}
}