UiDevice.openNotification() не работает с windowFullscreen=true
Один из моих тестов UiAutomator не проходит на одном из моих тестовых устройств, потому что
_uiDevice.openNotification()
не удается открыть область уведомлений. Вопреки документации этой функции, я получаю true
в результате.
Если я установлю <item name="android:windowFullscreen">false</item>
(ранее это было true
), уведомления открываются правильно.
Но эта проблема возникает только на одном из моих устройств (Sony Xperia Z3), в то время как другому (Samsung Galaxy S5) удается открыть уведомление, независимо от того, полноэкранный режим или нет.
Мой (начальный) стиль:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowFullscreen">true</item>
<item name="colorAccent">@color/ioxp_yellow</item>
</style>
В моем манифесте:
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="landscape"
android:theme="@style/AppTheme" >
Выдержка из моего теста:
@RunWith(AndroidJUnit4.class)
public class MainActivityAutomatorTest {
@Test
public void testNotifications() throws UiObjectNotFoundException, NoSuchMethodException,
NoSuchFieldException, IllegalAccessException,
InvocationTargetException, ClassNotFoundException
{
//...
Assert.assertTrue("Could not open device notifications", _uiDevice.openNotification());
String notificationString = context.getString(R.string.downloadService_title_workspace, serverWsId);
UiObject2 notification = _uiDevice.wait(Until.findObject(By.text(notificationString)),
UI_TIMEOUT);
Assert.assertNotNull(notification); // THIS FAILS
}
@Before
public void startMainActivityFromHomeScreen() {
// Initialize UiDevice instance
_uiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
// Start from the home screen
_uiDevice.pressHome();
// Wait for launcher
final String launcherPackage = _uiDevice.getLauncherPackageName();
Assert.assertNotNull(launcherPackage);
_uiDevice.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)), UI_TIMEOUT);
// Launch the app
Context context = InstrumentationRegistry.getContext();
final Intent intent = context.getPackageManager()
.getLaunchIntentForPackage(BuildConfig.APPLICATION_ID);
Assert.assertNotNull(intent);
// Clear out any previous instances
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intent);
// Wait for the app to appear
_uiDevice.wait(Until.hasObject(By.pkg(BuildConfig.APPLICATION_ID).depth(0)), UI_TIMEOUT);
}
}
Это ошибка в рамках Automator или я делаю что-то не так?