更新后无法启动应用程序,只能选择卸载

App can't be launched after update, only option is uninstalling

我更新到 Android Studio 2.0 并用它调试了一个应用程序。我注意到调试应用程序不再列在菜单中的可启动应用程序中,我认为这可能是由于 Android Studio 2.0 的新即时 运行 功能所致。

然后,我生成了一个签名版本 .apk 并将其上传到商店。两台测试设备安装了更新,但它们无法再启动该应用程序。它也没有在上述菜单中列出,Google Play 的唯一选项是 "uninstall" 应用程序,没有启动按钮。

我应该在哪里寻找这个问题的原因以及如何解决它?我已经检查了我的 AndroidManifest.xml 以将 Activity 标记为 Main:

    <activity
        android:name=".activities.LoginActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data android:scheme="myapp" />
        </intent-filter>
    </activity>

你的问题是这样的:

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

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

        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data android:scheme="myapp" />
    </intent-filter>

你是说这个activity需要满足三个条件:

  • ACTION_VIEWACTION_MAIN
  • CATEGORY_DEFAULTCATEGORY_BROWSABLECATEGORY_LAUNCHER
  • myapp作为方案

主屏幕启动器不会添加 myapp 作为方案,因此主屏幕(和“设置”应用)无法启动此 activity。

据推测,您想要的是相同 <activity>:

的两个单独的 <intent-filter> 元素
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

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

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data android:scheme="myapp" />
    </intent-filter>