背景:安装录音应用,此时运行在后台,执行录音输出的文件,打开文件显示无数据;
解决方案:
主要修改记录:
frameworks/base/services/core/java/com/android/server/appop/AppOpsService.java
case OP_RECORD_AUDIO:
if ((capability & PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) != 0) {
return MODE_ALLOWED;
} else {
Slog.d(TAG, "RECORD_AUDIO-evalMode-op:" + op + " ,mode: " + mode
+ " ,capability: " + capability);
//begin modified
List<String> packageNames = new ArrayList<>();
PackageManagerInternal packageManagerInternal = LocalServices.getService(
PackageManagerInternal.class);
PackageList packages = packageManagerInternal.getPackageList();
for (String packageName : packages.getPackageNames()) {
String allowPackages = SystemProperties.get("persist.xxxx");
String[] permissionPackages = allowPackages.split(",");
for(String appPkgName : permissionPackages){
if(packageName.equals(appPkgName)){
return MODE_ALLOWED;
}
}
}
//end
uniEvent.putInt("RECORD_AUDIO-evalMode-op", op)
.putInt("RECORD_AUDIO-mode", mode)
.putInt("RECORD_AUDIO-capability", capability);
UniView.report(uniEvent);
return MODE_IGNORED;
}
default:
return MODE_ALLOWED;
device/sprd/qogirn6pro/uis7870sc_2h10/product/uis7870sc_2h10_nosec/main.mk
PRODUCT_PROPERTY_OVERRIDES += \
persist.xxx =com.xxx,com.xxx,com.xxx
device中设置属性做基础包用,对需要的应用包名添加进去;