исключение java.lang - PullRequest
       8

исключение java.lang

0 голосов
/ 12 февраля 2019

Я написал базовый скрипт, используя appium для запуска приложения. Он отлично работает для некоторых приложений, но выдает ошибку при попытке запустить некоторые приложения. Я пробовал свой скрипт с двумя приложениями

  1. Angry Birds Rio
  2. Среднее приложение

Я узнал значения 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?

1 Ответ

0 голосов
/ 12 февраля 2019

Вы получите такую ​​ошибку, когда попытаетесь запустить приложение appActivity, которое не является основным Activity.

Вы должны поместить основное приложение appActivity в желаемую возможность.

Вы можете найти активность приложения, используя:

>adb shell 
>dumpsys package | grep -i "app Package name here" | grep Activity

// для вашего случая вы можете использовать:

>dumpsys package | grep -i com.rovio.angrybirdsrio | grep Activity
>dumpsys package | grep -i com.medium.reader | grep Activity
...