我正在开发一个应用程序,该应用程序需要知道其他第三方应用程序何时请求麦克风。有什么方法可以检测到它吗?
提前感谢!
经过一些研究,由于安全原因,似乎不可能知道另一个第三方应用程序何时请求MICROPHONE。
如果你想根据媒体记录器的实际状态执行操作,你可能必须按照这篇文章中的解释来处理:
如何检测MediaRecorder是否被其他应用程序使用?
关于检测其他应用程序的权限访问,我认为这可以提供一个答案:如何检测其他应用的权限访问?
但是,如果你想检查需要RECORD_AUDIO权限的应用程序,你可以继续阅读以下行:
基于Kopi-B对此问题的回答
要获得请求麦克风的应用程序列表,您可以按照以下步骤进行:
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;
}
}
}
}