Отображается ошибка автоматизации Android: «Исключение безопасности: отказ в разрешении: запуск намерения» - PullRequest
0 голосов
/ 04 февраля 2019

Протестировано несколько собственных приложений Android с использованием скрипта автоматизации appium / selenium, но ни одно из приложений не открывается и выдает следующее сообщение об ошибке

Stderr: 'Исключение безопасности: Отказ в разрешении: запуск Intent с нуля(pid = 20930, uid = 2000) не экспортируется из uid 10178 '

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

DesiredCapabilities caps = new DesiredCapabilities();
        caps.setCapability("deviceName", "Mobile");
        caps.setCapability("udid", "520042c3b5e5"); 
        caps.setCapability("platformName", "Android");
        caps.setCapability("platformVersion", "8.0.0"); 
        caps.setCapability("appPackage", "in.amazon.mShop.android.shopping");
        caps.setCapability("appActivity", "com.amazon.mShop.home.web.MShopWebGatewayActivity");
        caps.setCapability("noReset", "true");          

        //Instantiate Appium Driver
        try 
        {
            AppiumDriver<MobileElement> driver = new AndroidDriver<MobileElement>(new URL("http://0.0.0.0:4723/wd/hub"), caps);
        } 
        catch (MalformedURLException e) 
        {
            System.out.println(e.getMessage());
        }

Amazon mobileприложение должно открыться, но исключение безопасности: отображается сообщение об ошибке «Отказ в разрешении».

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

В Интернете есть несколько решений, в которых говорится, что нужно редактировать поле экспорта в AndroidManifest.xml.Где этот файл будет найден?

Версия Appium - 1.10.0 Java - JDK 1.8

Ответы [ 2 ]

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

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

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

У меня также возникла подобная проблема, когда разработчик добавил заставку в приложение и изменил основную активность приложения.

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

Из официальной документации это то, что делает экспортируемый атрибут, если:

  • android: exported = true -> Приемник вещаниявозможность получать сообщения из источников вне приложения

  • android: exported = false -> широковещательный приемник может получать сообщения только из самого приложения

Вы можете добавить атрибут exported внутри тега элемента <activity> в файле AndroidManifest.xml, как показано ниже:

 <activity android:name=".MainActivity"
        android:exported="true"> 
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
 </activity>
...