android - 无法从终端启动 Android 应用程序 : java. lang.SecurityException:权限拒绝启动 Intent - 未导出

标签 android adb

我们有一个 Xamarin 应用程序,我正在尝试为其编写自动化 UI 测试,并且我需要通过终端(使用 Appium)以编程方式启动该应用程序。当我尝试这样做时,我收到此错误:

An unknown server-side error occurred while processing the command. Original error: Cannot start the 'com.company.android' application. Visit https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/android/activity-startup.md for troubleshooting. Original error: Error executing adbExec. Original error: 'Command '/Users/kroe761/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell am start -W -n com.company.android/crc6483c3a7691f3846e9.MainActivity -S -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000' exited with code 255'; Stderr: 'Security exception: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.company.android/crc6483c3a7691f3846e9.MainActivity } from null (pid=4310, uid=2000) not exported from uid 10134
     
       java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.company.android/crc6483c3a7691f3846e9.MainActivity } from null (pid=4310, uid=2000) not exported from uid 10134
        at com.android.server.wm.ActivityStackSupervisor.checkStartAnyActivityPermission(ActivityStackSupervisor.java:1043)
        at com.android.server.wm.ActivityStarter.startActivity(ActivityStarter.java:760)
        at com.android.server.wm.ActivityStarter.startActivity(ActivityStarter.java:583)
        at com.android.server.wm.ActivityStarter.startActivityMayWait(ActivityStarter.java:1288)
        at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:514)
        at com.android.server.wm.ActivityTaskManagerService.startActivityAndWait(ActivityTaskManagerService.java:1231)
        at com.android.server.am.ActivityManagerService.startActivityAndWait(ActivityManagerService.java:3512)
        at com.android.server.am.ActivityManagerShellCommand.runStartActivity(ActivityManagerShellCommand.java:513)
        at com.android.server.am.ActivityManagerShellCommand.onCommand(ActivityManagerShellCommand.java:172)
        at android.os.ShellCommand.exec(ShellCommand.java:104)
        at com.android.server.am.ActivityManagerService.onShellCommand(ActivityManagerService.java:9774)
        at android.os.Binder.shellCommand(Binder.java:881)
        at android.os.Binder.onTransact(Binder.java:765)
        at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:4498)
        at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2741)
        at android.os.Binder.execTransactInternal(Binder.java:1021)
        at android.os.Binder.execTransact(Binder.java:994)'; Code: '255'

我不知道问题出在哪里,但我确实认为这可能与 AndroidManifest.xml 有关。如果相关的话,这是我们的:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="566"
    android:versionName="2021.01.13"
    package="com.company.android"
    android:installLocation="auto"
    android:windowSoftInputMode="stateHidden|adjustResize|adjustPan">

    <uses-sdk
        android:minSdkVersion="25"
        android:targetSdkVersion="30" />

    <application
        android:label="Company"
        android:icon="@mipmap/icon"
        android:allowBackup="true"
        android:resizeableActivity="true"
        android:supportsRtl="false" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <queries>
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="smsto"/>
        </intent>
    </queries>
</manifest>

最佳答案

尝试将其添加到您的 list 中(在 <application>...</application> 部分内),这将导出您的 Activity ,并且您可以在其他地方打开它。

<activity>
    android:name="YOUR.PACKAGE.MainActivity"
    android:exported="true"
</activity>

关于android - 无法从终端启动 Android 应用程序 : java. lang.SecurityException:权限拒绝启动 Intent - 未导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70656536/

相关文章:

android - 是否可以通过编程方式升级 Android 固件?

android - 带有包名称的 adb shell Logcat

android - ADB 没有在 Ubuntu 上检测到我的安卓设备

Android adb 备份存储问题

android - 亚行错误 : more than one device - android

android - 如何在 adb shell 上使用 su 命令?

Android:简单的 USSD 拨号器应用程序

android - 删除数据库中创建的前 20 行

android - 检索 Facebook 信息并将其放入抽屉导航标题中

android - 如何在 Android NDK 中使用 pthreads?