Easy way I tried its working, but u need java client v3.1
package Appium;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidKeyCode;
import java.io.IOException;
import java.net.URL;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ContextSwitchBetween2Activity{
public static AndroidDriver<WebElement> _driver;
@BeforeClass
public void setUpAppium() throws InterruptedException, IOException {
DesiredCapabilities capabilities = new DesiredCapabilities();
AppCapabilitiesSetUp(capabilities);
System.out.println("Before calling appium");
_driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4725/wd/hub"), capabilities);
System.out.println("After calling appium");
}
@Test
public void ContextSwitchBetween2ActivityTest() throws InterruptedException{
// Wait for first app to load
By webView = By.className("android.webkit.WebView");
WebDriverWait wait = new WebDriverWait(_driver,300);
wait.until(ExpectedConditions.visibilityOfElementLocated(webView));
// Start Second app
String appPackage="appPackage2";
String appActivity="appActivity2";
_driver.startActivity(appPackage2,appActivity2);
// Press Home Key
_driver.sendKeyEvent(AndroidKeyCode.HOME);
// KEYCODE_APP_SWITCH
_driver.sendKeyEvent(0x000000bb);
// Tap our first app
List<WebElement> elem = _driver.findElements(By.className("android.widget.FrameLayout"));
for (int i=0;i<elem.size()-1;i++){
System.out.println("elem.get(i).getAttribute(name) :: " + elem.get(i).getAttribute("name")) ;
if (elem.get(i).getAttribute("name").equals("App Name 1 text")){
System.out.println("Tapping :: " + elem.get(i).getAttribute("name")) ;
_driver.tap(1, elem.get(i), 100);
break;
}
}
Thread.sleep(4000);
}
@AfterClass(alwaysRun=true)
public void teardown(){
_driver.quit();
}
public DesiredCapabilities AppCapabilitiesSetUp(DesiredCapabilities cap){
cap.setCapability(CapabilityType.BROWSER_NAME,"");
cap.setCapability("platformVersion","4.4.4");
cap.setCapability("platformName","Android");
cap.setCapability("deviceName","deviceName");
cap.setCapability("appPackage","appPackage1");
cap.setCapability("appActivity","appActivity1");
return cap;
}
}