当前位置: 首页 > 知识库问答 >
问题:

JAVA当与appium和adb绑定启动某些应用程序时,会出现lang.SecurityException

松越
2023-03-14

我使用appium编写了一个基本脚本来启动一个应用程序,它对一些应用程序非常有效,但当我尝试启动一些应用程序时,它会给出一个错误。我用两个应用程序尝试了我的脚本

  1. 愤怒的小鸟里约

我通过adb(android调试桥)工具找出appPackage和appActive值

愤怒的小鸟应用

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时,应用程序将在模拟器中启动,不会出现任何问题,但如果我在中间应用程序中使用appPackage和appActivity,脚本将给出一个java。lang.SecurityException:权限拒绝:启动意图错误

后试图修复的问题,我发现,我必须设置android:导出="真"在Androidanifest.xml,我不确定阉羊我可以做到这一点,因为我没有源代码的任何应用程序,我试图使自动化

另一个建议是尝试通过adb(Android设备桥)启动应用程序,我尝试通过adb启动这两个应用程序,得到了相同的结果愤怒的小鸟应用程序启动没有任何问题,但中间应用程序没有在这里启动是错误的

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个答案

丌官霖
2023-03-14

当您尝试启动不是主要活动的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
 类似资料:
  • 我无法在使用Appium的设备中启动android应用程序。请在下面找到我的代码: public static void main(string[]args)引发MalformedURLException{

  • 问题内容: 我有一个Java应用程序。 该应用程序具有一个设置,该设置决定该应用程序是否在启动时启动。 目前,我可以通过在“启动项目”文件夹中放置/删除快捷方式来实现此目的。 但是,我想知道是否有更好的方法来处理此行为。 编辑 是的,它是Windows。抱歉,之前没有清除该内容。 该应用程序具有一个用户可以在其中触发动作的UI,并且该应用程序在运行时会定期在后台运行一些任务。 @Peter,如何在

  • 我有一份Java申请。 应用程序有一个决定应用程序是否在启动时启动的设置。 目前,我通过在StartUp items文件夹中放置/删除快捷方式实现了这一点。 然而,我想知道是否有更好的方法来处理这种行为。 编辑 是的,是视窗。抱歉之前没有清除。 应用程序有一个UI,用户可以在其中触发操作,并且应用程序在运行时定期在后台运行一些任务。 @Peter,如何使用应用程序中的代码更改注册表?这种方法是否与

  • 我有一个带有导航抽屉的Android应用程序。我的问题是,加载某些片段需要几秒钟(解析器、映射API)。我想在应用程序启动时加载我的所有片段。 我不确定这是否可能或是一个好方法,但我正在考虑在主活动的onCreate方法中创建我的每个片段的实例。然后,当用户在导航抽屉中选择一个片段时,我使用现有实例,而不是创建一个新实例。 问题是,当我第一次展示一个特定片段时,它并不能阻止延迟。在我看来,原因是片

  • 问题是,当我在Google中使用授权运行此代码时,它会立即崩溃: 但是日志中的错误: 2019-06-22 17:55:42.652 29327-23222/?E/AudioSource:在已关闭的AudioSource 2019-06-22 17:55:43.240 2093-2616/?E/TouchFilter:setTouchFilter日志启用参数:0 2019-06-22 17:55:

  • 我正试图用Tomcat7运行我的webapp,但我遇到了这个例外: Grave:Excepción arrancando filtro Wicket.Filter java.lang.IllegalStateException:在org.apache.Wicket.Spring.SpringWebApplicationFactory.createApplication(SpringWebAppli