Я пытаюсь обновить targetSDK моего приложения до уровня выше 23, и у меня возникла небольшая проблема. У меня есть активность, которая связывает трафик с Wi-Fi (для измерения скорости сети к маршрутизатору, даже если маршрутизатор не подключен к Интернету). Для этого моему приложению необходимо разрешение CHANGE_NETWORK_STATE
. Это разрешение обычно предоставляется непосредственно, если оно заявлено в манифесте. В Android 6.0 (точнее, это было исправлено в 6.0.1 IIRC) CHANGE_NETWORK_STATE
не работает и не будет предоставлено, поэтому вместо этого вам нужно разрешение WRITE_SETTINGS
. Я реализовал способ для пользователей Android 6.0 предоставить это разрешение, но когда я хочу проверить свою активность с помощью эспрессо, я не могу этого сделать. Разрешения предоставляются тестам, добавляя что-то вроде
@Rule
public GrantPermissionRule runtimePermissionRule = GrantPermissionRule.grant(Manifest.permission.CHANGE_NETWORK_STATE);
в TestCase. Это работало в других местах в приложении, но за это я получаю
junit.framework.AssertionFailedError: Failed to grant permissions, see logcat for details
в моих результатах теста. В logcat я нахожу E/GrantPermissionCallable: Permission: android.permission.WRITE_SETTINGS cannot be granted!
или то же самое с CHANGE_NETWORK_STATE
, я пытался предоставить оба, и они оба не работают. Есть ли другой способ предоставить мне разрешение на тестирование? Или я не могу теперь проверить эту активность на устройствах 6.0?