Мое приложение подтверждено как владелец устройства через ADB.
Ниже приведен упрощенный код, связанный с включением ведения журнала и настройкой DeviceAdminReceiver.
Код: Выделить всё
...
DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName adminComponentName = new ComponentName(context, AppDeviceAdminReceiver.class);
if (dpm.isDeviceOwnerApp(context.getPackageName())) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
dpm.setAffiliationIds(adminComponentName, Collections.singleton("my.unique.id"));
dpm.setSecurityLoggingEnabled(adminComponentName, true);
dpm.setNetworkLoggingEnabled(adminComponentName, true);
Log.d("Setup", "Logging enabled");
return true;
}
} else {
Log.w("Setup", "Not device owner, cannot enable logging.");
return false;
}
...
Код: Выделить всё
public class AppDeviceAdminReceiver extends DeviceAdminReceiver {
@Override
public void onSecurityLogsAvailable(@NonNull Context context, @NonNull Intent intent) {
Log.i("AdminReceiver", "Security logs available.");
// TODO: Handle logs...
}
@Override
public void onNetworkLogsAvailable(@NonNull Context context, @NonNull Intent intent, long batchToken, int networkLogsCount) {
Log.i("AdminReceiver", "Network logs available, count: " + networkLogsCount);
// TODO: Handle logs...
}
}
Код: Выделить всё
С другой стороны, я могу получать сетевые журналы, но только тогда, когда я использую метод onReceive, например, в AppDeviceAdminReceiver, а не через рекомендуемый обратный вызов onNetworkLogsAvailable. :
Код: Выделить всё
@Override
public void onReceive(@NonNull Context context, @NonNull Intent intent) {
Log.i("AppDeviceAdminReceiver", "Received intent: " + intent.getAction());
}
Я тестировал это поведение на нескольких устройствах из разные поставщики, от Android 10 до 14, безуспешно в получении журналов безопасности.
Мне интересно, могут ли быть дополнительные конфигурации или разрешения, которые я пропустил для получения этот обратный вызов. Мы будем очень признательны за любые идеи или предложения о том, почему это может не сработать.
Подробнее здесь: https://stackoverflow.com/questions/782 ... inreceiver
Мобильная версия