Как определить, запрашивает ли какое-либо приложение микрофон в Android? - PullRequest
0 голосов
/ 08 ноября 2018

Я разрабатываю приложение, которое должно знать, когда другое стороннее приложение запрашивает микрофон. Есть ли способ обнаружить это?

Заранее спасибо!

1 Ответ

0 голосов
/ 08 ноября 2018

После некоторых исследований кажется невозможным узнать, когда другое стороннее приложение запрашивает МИКРОФОН по соображениям безопасности.

Если вы хотите выполнить действия в соответствии с фактическим состоянием медиа-рекордера, вам, возможно, придется обращаться с этим, как описано в этом посте:

Как определить, используется ли 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;
                    }
                }
            }
        }
...