Android 在 Android Studio 中构建后应用程序图标不会显示

Android App icon wont show after building in Android Studio

我不确定哪里出错了,但我需要一些支持。 我试图通过参考其他解决方案来修复它,但似乎没有任何改变。

我正在尝试在 android 应用程序启动器中显示图标。

应用程序安装成功,但在对主要代码进行了一些更改之后。 Android 应用程序图标未显示在应用程序启动器中。 我总是必须使用命令 adb shell am start 从终端启动应用程序来启动应用程序:

adb shell am start -a android.intent.action.MAIN -n com.medicalrecordsservice.app.android/.activity.NFCInterfaceActivity

我的应用程序清单如下所示:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.medicalrecordsservice.app.android" android:versionCode="1" android:versionName="1.0">
    <uses-sdk android:minSdkVersion="17"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.NFC"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

    <application android:icon="@drawable/ic_launcher" android:label="@string/app_name">
        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.NFC"/>
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

        <activity android:label="Medical Records Service Android App" android:name=".activity.GetAndDisplayRecordsDescriptorsActivity"></activity>
        <activity android:label="Medical Records Service Android App" android:name=".activity.CoordinatorActivity"></activity>
        <activity android:name=".activity.AuthenticationActivity"></activity>
        <activity android:name=".activity.MedicalRecordGetterActivity"></activity>
        <activity android:name=".activity.MedicalRecordCreatorActivity"></activity>
        <activity android:name=".activity.MedicalRecordsMainActivity"></activity>
        <activity android:name=".activity.NFCInterfaceActivity" android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <action android:name="android.nfc.action.NDEF_DISCOVERED" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="application/certificate" />
            </intent-filter>
        </activity>
    </application>
</manifest>

您在 intent 过滤器中指定了一个 <data ... /> 元素。因此,意图过滤器将只匹配包含 MIME 类型 "application/certificate" 的意图。启动器意图不包含该数据类型。因此,您 activity 不会出现在启动器中。

为了解决这个问题,您可以解耦两个 Intent 过滤器(启动器和 NFC):

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

    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="application/certificate" />
    </intent-filter>
</activity>

请注意,您无需对指定意图过滤器的活动设置 android:exported="true",因为这些活动将默认导出。此外,<uses-permission ... /> 元素必须放在 外部 <application ... /> 元素。