运行 来自 Android Studio 的应用无法在设备上运行,在模拟器上运行正常

Run app from Android Studio not working on device, OK on emulator

我有一个应用程序,它基本上是我 运行.

网络应用程序的 WebView

我最初只使用一个包含 WebView 的 activity (activity_main) 创建了该应用程序,并且一直在努力让它按要求工作。

然后我决定添加第二个 activity 来做一些预加载检查,例如检查活动网络连接等。

当我添加此 pre-load-checks activity 时,一切似乎都正常,但是当应用程序 运行 在模拟器或我的设备上(安装 apk 或 运行ning 通过设备上的 AS),我的新 pre-load-checks activity 是第一个启动的。这没关系,因为我正在调整布局和图形等。

我还没有写完 pre_load_checks,所以它还没有做所有的检查,也没有启动第二个 activity,但我需要做更多的工作在 WebView 上。

因此,我尝试通过更改 Run/Debug 配置中的启动选项来切换应用程序以在启动时启动 activity_main activity。

现在,当我尝试 运行 我设备上的应用程序时,它失败了。有时它只是不启动,有时我收到一条消息说我的应用程序已停止。它在模拟器中运行正常。

请注意,此时我没有对 activity_main 进行任何更改。

当我尝试 运行 它时,AS 中的消息说该应用程序已在我的设备上启动 - 没有错误。

然后我决定尝试将 activity_main activity 重命名为更合理的名称,因为它不再是初创公司 activity。我通过布局 xml 的重构-> 重命名选项将其重命名为 activity_website_view。我也对相关的 java 文件做了同样的事情。

经过一些清理后,我设法让事情再次编译,但在某处发生了一些奇怪的事情 - 现在如果我进入 Run/Debug 配置屏幕,我的新重命名 activity_website_viewapp 一起显示在树的“Applications b运行ch 下。我的 pre_load_checks activity 没有显示在这里。

同样,在工具栏下拉菜单中,您可以选择 run/debug,我可以选择 运行 appactivity_website_view,但不能选择 pre_load_checks.

这些是否相关,或者我可以直接访问其中一项活动是否正确?我可以看到我可以手动将另一个 'application' 添加到列表中,但我想知道我在此过程中所做的某些事情是否导致我的旧 activty_main 被自动添加,这是否与为什么activity 在我的设备上将不再 运行 但在模拟器上可以。

有关信息,我的 AndroidManifest.xml 如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.nooriginalthought.bluebadgeparking">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".PreLoadChecks"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".websiteViewActivity"
            android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <paction android:name="android.intent.action.MAIN" />

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

</manifest>

根据我上面的评论,这是一个错字。

action 前面的 'p' 不应该在那里并且阻止了东西在我的设备上启动 - 但很奇怪它没有阻止它们 运行模拟器。