如何检测是否有任何应用程序要求Android中的麦克风?

时间:2018-11-08 10:49:58

标签: android microphone

我正在开发一个应用程序,该应用程序需要知道其他第三方应用程序何时请求麦克风。 有什么办法可以检测到它?

谢谢!

1 个答案:

答案 0 :(得分:0)

经过一些研究,由于安全原因,似乎无法知道何时有其他第三方应用程序请求MICROPHONE。

如果要根据媒体记录器的实际状态执行操作,则可能必须按照本文中的说明进行处理:

How to detect if MediaRecorder is used by another application?

关于检测其他应用程序的权限访问,我认为这可以提供答案:How to detect permission access of other apps?

但是,如果要检查需要RECORD_AUDIO权限的应用,则可以继续阅读以下几行:

根据Kopi-B this question的答案

要获取请求麦克风的应用列表,您可以按照以下步骤操作:

 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;
                    }
                }
            }
        }