我正在开发一个应用程序,该应用程序需要知道其他第三方应用程序何时请求麦克风。 有什么办法可以检测到它?
谢谢!
答案 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;
}
}
}
}