Я написал базовый скрипт, используя appium для запуска приложения. Он отлично работает для некоторых приложений, но выдает ошибку при попытке запустить некоторые приложения. Я пробовал свой скрипт с двумя приложениями
- Angry Birds Rio
- Среднее приложение
Я узнал значения appPackage и appActivity с помощью инструмента adb (android debug bridge)
Приложение Angry Birds
mCurrentFocus=Window{11fff76 u0 com.rovio.angrybirdsrio/com.rovio.fusion.App}
Среднее приложение
mCurrentFocus=Window{af3c82 u0 com.medium.reader/com.medium.android.donkey.read.HomeActivity5}
Вот сценарий, который я написал
public static void main(String[] args) throws MalformedURLException,InterruptedException {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("platformVersion", "8.1.0");
capabilities.setCapability("deviceName", "Android SDK built for x86");
capabilities.setCapability("udid", "emulator-5554");
capabilities.setCapability("appPackage", "com.medium.reader");
capabilities.setCapability("appActivity", "com.medium.android.donkey.read.HomeActivity5 t69");
capabilities.setCapability("noReset", "true");
capabilities.setCapability("autoWebview", "true");
URL url = new URL("http://0.0.0.0:4723/wd/hub");
AppiumDriver<WebElement> driver = new AndroidDriver<WebElement>(url,capabilities);
driver.context("com.medium.android.donkey.read.HomeActivity5");
}
Когда я использую appPackage и appActivity для приложения Angry Birds, приложение запускается в эмуляторе без каких-либо проблем, но если я использую appPackage и appActivity для среднего приложения, скрипт выдаст java.lang.SecurityException: Отказ в разрешении: начало намерения ошибка
После попытки решить проблему я обнаружил, что мне нужно установить android: exported = "правда "в AndroidManifest.xml, я нетНе уверен, что могу это сделать, потому что у меня нет исходного кода ни для одного из приложений, которые я пытаюсь автоматизировать
Еще одно предложение было попытаться запустить приложение через adb (мост устройства Android), я пыталсязапуск обоих приложений через adb, который дал одинаковый результат Приложение Angry birds было запущено без каких-либо проблем, но приложение Medium здесь не запускалось. Ошибка
java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000 cmp=com.medium.reader/com.medium.android.donkey.read.HomeActivity5 } from null (pid=16084, uid=2000) not exported from uid 10084
at com.android.server.am.ActivityStackSupervisor.checkStartAnyActivityPermission(ActivityStackSupervisor.java:1632)
at com.android.server.am.ActivityStarter.startActivity(ActivityStarter.java:438)
at com.android.server.am.ActivityStarter.startActivityLocked(ActivityStarter.java:278)
at com.android.server.am.ActivityStarter.startActivityMayWait(ActivityStarter.java:817)
at com.android.server.am.ActivityManagerService.startActivityAndWait(ActivityManagerService.java:4625)
at com.android.server.am.ActivityManagerShellCommand.runStartActivity(ActivityManagerShellCommand.java:412)
at com.android.server.am.ActivityManagerShellCommand.onCommand(ActivityManagerShellCommand.java:141)
at android.os.ShellCommand.exec(ShellCommand.java:96)
at com.android.server.am.ActivityManagerService.onShellCommand(ActivityManagerService.java:15014)
at android.os.Binder.shellCommand(Binder.java:594)
at android.os.Binder.onTransact(Binder.java:492)
at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:4243)
at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2919)
at android.os.Binder.execTransact(Binder.java:697)
Можно ли запустить любое приложение через adb или appium?