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 ... />
元素。
我不确定哪里出错了,但我需要一些支持。 我试图通过参考其他解决方案来修复它,但似乎没有任何改变。
我正在尝试在 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 ... />
元素。