Не получены обратные вызовы для журналов безопасности в DeviceAdminReceiverAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Не получены обратные вызовы для журналов безопасности в DeviceAdminReceiver

Сообщение Anonymous »

Я разрабатываю приложение, которое действует как контроллер политики устройств на Android, уделяя основное внимание включению и обработке журналов безопасности. Несмотря на то, что я следовал документации по правильной настройке и включению ведения журнала безопасности, я не получаю обратные вызовы onSecurityLogsAvailable в своем подклассе DeviceAdminReceiver, хотя я могу получать сетевые журналы с помощью другого механизма.
Мое приложение подтверждено как владелец устройства через 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;
}
...
Реализация AppDeviceAdminReceiver:

Код: Выделить всё

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

AppDeviceAdminReceiver в Manifest.xml: Я пытался разблокировать устройство с неправильным кодом 5 раз, включать и отключать Bluetooth и Wi-Fi, устанавливать/удалять приложение с помощью adb, а также принудительно создавать журналы безопасности с помощью команды adb -s имя_устройства оболочка dpm Force-Security-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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»